[英]Regex: Do not match string with words preceding target word
如何找到目標詞的正則表達式匹配項,但是如果該目標詞前面帶有否定詞(例如“ not”),則不會給出匹配項。
否定詞必須在目標詞之前的一定范圍內,因此對於另一個否定它不會向后看
例:
Target = 'word'
+------------------------------------------+-------------+
| 'bananas is a word' | match |
| '76 is not a word' | NOT a match |
| '76 is not a word but bananas is a word' | match |
+------------------------------------------+-------------+
注意:
'76 is not a word but bananas is a word'
包含不能不 匹配 。 這就是為什么我不能使用^$
。
理想情況下,我可以包含多個否定詞,因此正則表達式如下所示:
.{1,25}(?<!(isn't|not).{1,10}) word
如果該模式始終遵循以下內容:
bananas is a word
76 is not a word
76 is not a word but bananas is a word
bananas is a word but 76 is not a word
bananas is a word and bird is a word
76 is not a word and 86 isn't a word either
那么您可以使用以下正則表達式:
([a-zA-Z0-9]*)\sis(?!'nt|\snot)\sa\sword
請注意,同時使用捕獲組和非捕獲組,以確保isn't
或is not
被正確排除在匹配之外。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.