如果不是一行上唯一的字符串,我想匹配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