目前如何運作
我能夠捕獲括號之間的值:
[[two b][three c]]
結果是
two b
three c
正則運算式
\[\[(. ?)\]\[(. ?)\]\]
當我使用這個字串
[[one a]]
沒有任何東西被捕獲,這就是我所期望的。美好的。
問題
我把琴弦組合起來
[[one a]] and [[two b][three c]]
這是捕獲的
one a]] and [[two b
three c
我的理解
據我了解,可能的方法是否定]]字串。但我不知道該怎么做。而且我不確定這是否是正確的方法。
uj5u.com熱心網友回復:
char 匹配除換行符之外的.任何字符,并且它使用惰性量詞量化的事實并不限制它基本上匹配任何字符(匹配從左到右搜索,因此,[[匹配的是最左邊[[和下一個][無論是否存在[或]介于兩者之間,都匹配。
因此,一種方法是排除[[和][使用否定字符類之間的任何方括號[^\]\[]:
\[\[([^\]\[] )\]\[([^\]\[] )\]\]
請參閱正則運算式演示。在這里,[^\]\[] 替換匹配除and. ?之外的一個或多個字符。[]
您提到的另一種方法是,即匹配之前未開始[[(也可能]]也是)的任何字符][:
\[\[((?:(?!\[\[).)*?)\]\[(.*?)\]\]
\[\[((?:(?!\[\[|\][\]\[]).)*)\]\[(.*?)\]\]
請參閱此正則運算式演示。
該(?:(?!\[\[).)*?部分匹配任何不啟動字符序列 ( ) 的字符 ( .),零個或多個但出現次數盡可能少( )。*?[[(?!\[\[)
該(?:(?!\[\[|\][\]\[]).)*部分匹配任何不以 a 開頭的字符 ( .),零個或多個但盡可能多地出現 ( ) ,或字符序列 ( )。*[[[[][(?!\[\[|\][\]\[])
根據正則運算式的風格,您可以去掉這個正則運算式中的一些反斜杠。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/458797.html
標籤:正则表达式
