简化示例:考虑字符串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'
,则不会有匹配项。