正则表达式否定非连续模式
Regex Negate non-contiguous Pattern
我想匹配单词 fleece NOT 后跟(立即或进一步)单词 雪
输入数据:
Mary had a little lamb, its fleece was white as snow balls
以下正则表达式不起作用,因为它们都匹配,也不应该匹配。我确定我过去曾实现过此功能,但找不到位置。
/(fleece).*(?!snow)/
/(fleece)[\w ]+(?!snow)/
有关信息,此正则表达式将成为更大正则表达式的一部分,并且将成为一个交替部分,因此我不能简单地否定整个正则表达式 - 例如
/something(?!somethingelse)|fleece.*(?!snow)/
你快到了。将 .*
放在负前瞻中。下面的正则表达式将捕获字符串 fleece
只有当它后面没有跟随 .*?
任何字符零次或多次以及字符串 snow
.
(fleece)(?!.*?snow)
或
必要时使用单词边界 \b
。
\b(fleece)\b(?!.*?\bsnow\b)
我想匹配单词 fleece NOT 后跟(立即或进一步)单词 雪
输入数据:
Mary had a little lamb, its fleece was white as snow balls
以下正则表达式不起作用,因为它们都匹配,也不应该匹配。我确定我过去曾实现过此功能,但找不到位置。
/(fleece).*(?!snow)/
/(fleece)[\w ]+(?!snow)/
有关信息,此正则表达式将成为更大正则表达式的一部分,并且将成为一个交替部分,因此我不能简单地否定整个正则表达式 - 例如
/something(?!somethingelse)|fleece.*(?!snow)/
你快到了。将 .*
放在负前瞻中。下面的正则表达式将捕获字符串 fleece
只有当它后面没有跟随 .*?
任何字符零次或多次以及字符串 snow
.
(fleece)(?!.*?snow)
或
必要时使用单词边界 \b
。
\b(fleece)\b(?!.*?\bsnow\b)