我想匹配单词
gay
,除非它是单词 megayacht
的一部分。我知道我可以使用负前瞻和负后瞻从匹配中排除 gayacht
或 megay
,例如
(?<!me)gay
和
gay(?!acht)
但是使用
(?<!me)gay(?!acht)
仍会将
megay
和 gayacht
从比赛中排除,这不是我想要的。我找不到同时需要两者的方法。
使用
gay(?!(?<=megay)acht)
参见正则表达式证明。
解释
--------------------------------------------------------------------------------
gay 'gay'
--------------------------------------------------------------------------------
(?! look ahead to see if there is not:
--------------------------------------------------------------------------------
(?<= look behind to see if there is:
--------------------------------------------------------------------------------
megay 'megay'
--------------------------------------------------------------------------------
) end of look-behind
--------------------------------------------------------------------------------
acht 'acht'
--------------------------------------------------------------------------------
) end of look-ahead
您可以使用交替模式:
(?<!me)gay|gay(?!acht)