簡體   English   中英

使用正則表達式否定前瞻排除確切字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM