[英]Exclude exact string using regex negative lookahead
我想使用正則表達式從字符串中排除pqr
。
我目前擁有的是
abc\/(?!.*pqr).*\/xyz
這正確地拒絕了abc/pqr/xyz
,但它也拒絕了我希望它匹配的abc/pqrst/xyz
。
我希望pqr
只在它是一個完整的單詞時被排除在外,而不是當它是一個較長的單詞(如pqrst
的子字符串時被排除在外。
您可以在前瞻中使用帶有pqr
單詞邊界:
abc\/(?!.*\bpqr\b).*\/xyz
^^ ^^
請參閱正則表達式演示。 如果您不使用單詞邊界,任何pqr
都會導致正則表達式失敗,並且當您添加單詞邊界時,只有當pqr
作為整個單詞存在時,那些匹配才會失敗。
另一種方法是在特定上下文中匹配pqr
:
abc\/(?!(?:.*\/)?pqr\/).*\/xyz
請參閱另一個演示。 在這里, (?!(?:.*\\/)?pqr\\/)
將在abc/
之后匹配,或者在abc
之后跟 0+ 直到最后一個/
任何字符之后匹配,並且僅當跟在另一個/
。 在所有其他情況下,您將進行匹配。
注意:應該對xyz
應用相同的方法(您可以在它后面添加一個\\b
以匹配整個單詞xyz
。
注意2:要要求pqr
出現在xyz
之前,請使用abc\\/(?!(?:(?!\\/xyz).)*\\bpqr\\b).*\\/xyz
。
一個簡單的檢查就是看看你當時沒有pqr/
:
abc\/(?!.*pqr\/).*\/xyz
還要注意.*
在(?!.*
阻止你接受abc/defpqr/xyz
,你確定這是你想要的嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.