2017-04-16 92 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+))

相關問題