我想匹配nvalue,如果它不是一行中唯一的字符串。
nvalue : should not match
This nvalue : should match
Nvalue example : should match
我知道正则表达式匹配nvalue,如果它是唯一的字符串:
^\bnvalue\b$
但我不知道如何扭转它。
答案 0 :(得分:2)
使用负面的lookbehind:
^(?!nvalue$).*nvalue
此处^(?!nvalue$)
表示匹配字符串的开头,只是在此之后不会跟nvalue
和字符串$
结束。
演示:https://regex101.com/r/1vOhQt/1
<强>更新强>
如果您只需要提取nvalue
,请使用括号将其包装到捕获组中:
^(?!nvalue$).*(nvalue)
结果将存储在第一个匹配组中。演示:https://regex101.com/r/1vOhQt/3。
如果您正在使用PCRE风格,请使用\K
重置之前匹配的任何子模式:
^(?!nvalue$).*\Knvalue
演示:https://regex101.com/r/1vOhQt/2
在Python中,\K
为supported in regex
module。
答案 1 :(得分:1)
您可以使用匹配组和运算符|
作为替代,以匹配两种可能性:
((\w+ nvalue)|(nvalue \w+)
) 它适用于所有正则表达式搜索引擎
带有标志g
的:全球
............... i
:区分大小写的
................ m
:多行
或:
((\w+ [Na]value)|([Na]value \w+))