我試圖找到一個正則運算式,它將匹配方括號內的所有文本組,除了前面帶有 backlash 的那些。為了說明我的觀點,給定以下文字:
[#5C9269]\[Go to [size=120%]1[/size] now][/color]
只有組#5C9269、size=120%和將匹配,忽略具有前面反斜杠字符的/size組。/colorGo to [size=120%]1[/size] now
我對這個問題的最佳嘗試是下面的正則運算式/([^\\])\[([^{}]*?)\]/,尋找前面沒有反沖并在兩組中捕獲目標文本,但是這個運算式無法在行首捕獲有效匹配,因為它們之前沒有字符,比如在我之前的例子中。
uj5u.com熱心網友回復:
在您的模式中,您正在匹配([^\\])預期存在的字串開頭的字符。
您可以使用否定的lookbehind(非消耗性)排除前面的反斜杠。然后在字符類中排除匹配[and]而不是{and}
然后你也可以從方括號中洗掉非貪婪量詞?,[^{}]*?因為方括號不能越過閉合的量詞。
您想要的值在捕獲組 1 中。
(?<!\\)\[([^][] )]
解釋
(?<!\\)\正向向后看,直接在當前位置的左側斷言 no\[匹配開場白([^][] )捕獲組 1,匹配 1 次出現的任何字符,除了[和]]匹配關閉]
查看正則運算式演示。
如果您還想匹配方括號之間的空字串,您可以使用[^][]*
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/479793.html
