在一个特定单词后进行多次匹配

  • 本文关键字:单词 一个 regex pcre
  • 更新时间 :
  • 英文 :


简化示例:考虑字符串aabaabaabaabaacbaabaabaabaa

我希望使用一个regex表达式仅匹配中间c之后出现的所有aa

我最接近的是c.*Kaa,但它只匹配最后一个aa,并且只匹配带有不规则标志的第一个aa

我正在使用regex101网站进行测试。

您可以使用

(?:G(?!^)|c).*?Kaa

请参阅regex演示详细信息

  • (?:G(?!^)|c)-上一次成功匹配的结束(G(?!^)(或(|(c字符
  • .*?-除换行字符之外的任何零个或多个字符,尽可能少
  • K-忘记目前匹配的文本
  • aa—一个aa字符串

如果已知字符串正好包含一个'c',则与匹配

aa(?!.*c)

演示

(?!.*c)是一个负前瞻,它断言'c'不会稍后出现在字符串中。


如果不知道字符串是否包含零、一个或多个'c''aa',如果并且仅当字符串包含至少一个'c'并且'aa'后面没有'c',则可以匹配正则表达式

^.*cK|(?!^)aa

演示

正则表达式可以分解如下。

^      # match the beginning of the string
.*     # match zero or more chars, as many as possible
c      # match 'c'
K     # reset match pointer in string and discard all previously
# matched characters
|      # or
(?!^)  # negative lookahead asserts current string position is not
# at the beginning of the string
aa     # match 'aa'

请注意,如果字符串不包含'c',则不会有匹配项。

相关内容

  • 没有找到相关文章

最新更新