我已經閱讀了很多答案,并且總是使用 ? 操作員。我不確定我錯過了什么。
給定一個示例字串,例如:
the beginning stuff:0:evnt:some random stuff:MISTER GREEN:more stuff:1:evnt:again random stuff:MISS SCARLET:the rest of the stuff
我可以使用什么模式在“MISS SCARLET”之前獲得“1”?不依賴于知道任何隨機的東西部分是什么。我知道它總是在我們要查找的名稱之前是一個數字,后跟“:evnt”(不帶引號)。就我而言,不用擔心其他名字會妨礙(即,如果沒有另一個 x:evnt ,它永遠不會像 :3:evnt:blahblahMISTER GREEN blah blah MISS SCARLET 一樣)
我最初想出:
(\d):evnt.*MISS SCARLET
給出“0”,因為它匹配回格林先生的索引,因為 .* 匹配所有內容。好的,那么?救援:
(\d):evnt.*?MISS SCARLET
不,同樣的結果。
如何獲得與相關文本最接近的匹配項?我確定我的措辭不正確,但該示例應該顯示我想要的。如果我正在尋找綠色先生,我想用 MISS SCARLET 和“0”隔離那個“1”
謝謝。
uj5u.com熱心網友回復:
您可以將此正則運算式與否定字符類一起使用:
(\d ):evnt:[^:]*:MISS SCARLET
where[^:]*匹配 0 個或多個不是:.
正則運算式演示
但是,如果關鍵字后可能存在冒號,evnt那么您可以使用此正則運算式和否定前瞻:
(\d ):evnt:(?:(?!:evnt:).)*?:MISTER GREEN
正則運算式演示 2
(?:(?!:evnt:).)*?只要:evnt:不出現在該文本中的任何位置,這里將確保匹配 0 個或多個任何字符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/496167.html
標籤:javascript 正则表达式
上一篇:RegEx-前兩個八位位元組匹配
下一篇:驗證輸入全名
