Regex:负向后看和负向前看

6ie5vjzr  于 2023-08-08  发布在  其他
关注(0)|答案(3)|浏览(103)

我想匹配单词gay,除非它是单词megayacht的一部分。我知道我可以使用负向前看和负向后看从匹配中排除gayachtmegay,例如

(?<!me)gay

字符串

gay(?!acht)


但是使用

(?<!me)gay(?!acht)


仍然会从匹配中排除megaygayacht,这不是我想要的。我找不到一个方法同时要求两者。

h9vpoimq

h9vpoimq1#

使用方式

gay(?!(?<=megay)acht)

字符串
请参阅regex proof

说明

--------------------------------------------------------------------------------
  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

58wvjzkj

58wvjzkj2#

您可以排除匹配的megayacht并匹配包含gay的单词

\b(?!megayacht\b)\w*gay\w*

字符串
regex demo

sauutmhj

sauutmhj3#

您可以使用交替模式:

(?<!me)gay|gay(?!acht)

字符串

相关问题