繁体   English   中英

如果某个单词之前的两个单词来自否定列表,如何使用正则表达式不匹配模式

[英]How using Regular Expression to not match a pattern if two words before a certain word is from a negative list

考虑以下字符串:

str = "word1 word2 word3 word4 word5"

如果word4是[sample1,sample2]的样本,而word2不是(sample3,sample4)的样本,我想匹配一个模式。

例子:

str1 =  "word1 word2 word3 sample1 word5"   # it matches
str2 =  "word1 sample3 word3 sample1 word5"  # it doesn't match

我使用“ Negative Lookbehind”编写了一个正则表达式,但是我只能匹配一个单词,而不是两个单词。

谢谢大家的帮助。

我想您正在搜索这样的正则表达式:

\w+ \w+(?<!sample3|sample4) \w+ (?:sample1|sample2) \w+

如果您遇到“固定模式长度”问题,则可以使用负向前行而不是向后行

\w+ (?!sample3|sample4)\w+ \w+ (?:sample1|sample2) \w+

因为向前看没有限制。

见正则表达式演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM