2017-04-16 71 views
1

如果不是一行上唯一的字符串,我想匹配n值。正则表达式匹配字符串,如果不只是字符串行

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

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

^\bnvalue\b$ 

,但我不知道如何来扭转局面。

+0

只是一句话:要在你的例子匹配'nvalue'如果是完整的字符串,你不需要'\ B'等。 '^ nvalue $'是足够简单的。 – Pharaoh

+0

清除,谢谢。 – Hermie

回答

2

使用负回顾后:

^(?!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

+0

谢谢。我在演示中注意到“This”也包含在比赛中。我怎样才能摆脱它?对不起,如果这是一个愚蠢的问题,但我是新来的正则表达式。 – Hermie

+0

@Hermie:请参阅更新。根据你的正则表达式风格,可能有其他选项。它的味道是什么? –

+0

风味是Python。再次感谢! – Hermie

1

可以使用比赛组和运营商|的交替搭配两种可能性:

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

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

与标志g:全球
............... i:区分大小写
................ m:多行

或:

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

相关问题