我有两种字符串(something
可以是任何类型的文本):
<<something>>
<<CODE:something>>
用于查找两者的正则表达式的模式是:
<<(.*?)>>
<<CODE:(.*?)>>
如您所见,存在第一个模式也可以找到第二个字符串的问题。
由于两者都以 <<
开头且第一个模式是 (.*?)
,因此可能会出现不需要的匹配。
如何防止在 CODE:
内找到带有 << >>
的字符串?
答案 0 :(得分:1)
使用
<<(?!CODE:)(.*?)>>
见proof。
说明
--------------------------------------------------------------------------------
<< '<<'
--------------------------------------------------------------------------------
(?! look ahead to see if there is not:
--------------------------------------------------------------------------------
CODE: 'CODE:'
--------------------------------------------------------------------------------
) end of look-ahead
--------------------------------------------------------------------------------
( group and capture to \1:
--------------------------------------------------------------------------------
.*? any character except \n (0 or more times
(matching the least amount possible))
--------------------------------------------------------------------------------
) end of \1
--------------------------------------------------------------------------------
>> '>>'