如果以下兩個單詞出現在管道之間,我需要在分隔字串中找到匹配項:apple和red
示例字串 1(應該匹配):
|big blueberries blue|awesome lemon yellow|apple nice delicious red|
示例字串 2(不應匹配):
|big blueberries apple|awesome lemon yellow|nice delicious red|
正則運算式嘗試:
^.*?apple.*?red.*?
哪種(某種)有效,但不確定如何包含管道邏輯,即在管道之間搜索。
uj5u.com熱心網友回復:
如果該順序中的 2 個單詞必須在 2 個管道之間:
^[^|\r\n]*\|.*?\bapple\b[^|\r\n]*\bred\b[^|\r\n]*\|.*
^字串的開始[^|\r\n]*\|匹配除|或換行符以外的任何字符,然后匹配|.*?盡量少匹配\bapple\b匹配單詞蘋果[^|\r\n]*匹配除|或換行符以外的可選字符\bred\b匹配紅色這個詞[^|\r\n]*\|匹配除|或換行符以外的任何字符,然后匹配|.*匹配該行的其余部分
.NET 正則運算式演示
如果順序無關緊要,您可以為 apple 或 red 使用捕獲組,并再次匹配相同的單詞,斷言使用的是否定的lookhead 和尚未匹配的反向參考:
^[^|\r\n]*\|.*?\b(apple|red)\b[^|\r\n]*\b(?!\1)(?:apple|red)\b[^|\r\n]*\|.*
查看另一個.NET 正則運算式演示
uj5u.com熱心網友回復:
如果管道之間需要出現“apple”和“red”,請使用:
^.*?apple[^|]*red.*?
解釋:強制“apple”和“red”之間的任何字符不是管道符號|。那么,您也可以擺脫貪婪的比賽?。
在regex101中親自查看...
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/437249.html
上一篇:帶有條件陳述句的正則運算式,用于驗證JavaScript中的電話號碼
下一篇:在同一個字串中獲取不同的模式
