After如果-ing后面沒有單詞(和逗號之前),我想匹配。所以和逗號-ing之間不應該有一個詞After。
所需匹配(粗體):
坐下后,他開始說話。
終于坐下后,他開始說話。
坐下后,他開始說話。
我認為這個正則運算式會做到:
\bAfter\b.*(?!\w ing) ,
但如果-ing后面沒有單詞,它也會匹配 After :
坐下后,他開始說話。
終于坐下后,他開始說話。
坐下后,他開始說話。
https://regexr.com/683bv
為什么會這樣以及如何解決?
uj5u.com熱心網友回復:
試試這個正則運算式
只匹配句子 fromAfter和逗號,其中-ingwo 后沒有單詞 with
只是一個懶惰的量詞. (而不是\w 在你的正則運算式中)就可以了
\bAfter (?!. ?ing).*?,
(在第二個之后還有一個惰性量詞.*,以防萬一在同一個句子中有兩個逗號)
輸出:

Regex101 演示
告訴我它是否對你不起作用...
uj5u.com熱心網友回復:
您嘗試的模式:
- Using
.*將首先匹配整行,然后它會回溯以匹配第一個遇到的逗號,因此它也會匹配中間的所有逗號。 - 它可以匹配第一個遇到的逗號,因為這部分
(?!\w ing),斷言從當前位置開始沒有字字符后跟ing然后匹配 a,但是\w不匹配逗號所以斷言將始終為真。
您可以使用否定字符類在否定前瞻中排除匹配逗號,然后也匹配直到第一次出現逗號之后。
\bAfter\b(?![^,\n]*ing)[^,\n]*,
在部分,模式匹配:
\bAfter\b匹配After單詞邊界之間的單詞(?![^,\n]*ing)否定前瞻斷言從當前位置不發生ing不跨越逗號的情況[^,\n]*,匹配除逗號之外的可選字符(如果您不想跨行,則使用換行符)
正則運算式演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/334539.html
標籤:javascript 正则表达式
