正则表达式匹配字符串,如果不只是字符串在线

时间:2017-04-16 19:31:48

标签: regex

我想匹配nvalue,如果它不是一行中唯一的字符串。

nvalue : should not match
This nvalue : should match
Nvalue example : should match

我知道正则表达式匹配nvalue,如果它是唯一的字符串:

^\bnvalue\b$

但我不知道如何扭转它。

2 个答案:

答案 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中,\Ksupported in regex module

答案 1 :(得分:1)

您可以使用匹配组和运算符|作为替代,以匹配两种可能性:

((\w+ nvalue)|(nvalue \w+))

它适用于所有正则表达式搜索引擎

带有标志g

:全球
............... i:区分大小写的 ................ m:多行

或:

((\w+ [Na]value)|([Na]value \w+))