如果不是一行上唯一的字符串,我想匹配n值。正则表达式匹配字符串,如果不只是字符串行
nvalue : should not match
This nvalue : should match
Nvalue example : should match
我知道正则表达式匹配n值,如果它是唯一的字符串:
^\bnvalue\b$
,但我不知道如何来扭转局面。
如果不是一行上唯一的字符串,我想匹配n值。正则表达式匹配字符串,如果不只是字符串行
nvalue : should not match
This nvalue : should match
Nvalue example : should match
我知道正则表达式匹配n值,如果它是唯一的字符串:
^\bnvalue\b$
,但我不知道如何来扭转局面。
使用负回顾后:
^(?!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。
可以使用比赛组和运营商|
的交替搭配两种可能性:
((\w+ nvalue)|(nvalue \w+)
),它适用于所有的正则表达式搜索引擎
与标志g
:全球
............... i
:区分大小写
................ m
:多行
或:
((\w+ [Na]value)|([Na]value \w+))
只是一句话:要在你的例子匹配'nvalue'如果是完整的字符串,你不需要'\ B'等。 '^ nvalue $'是足够简单的。 – Pharaoh
清除,谢谢。 – Hermie