正则表达式 - 特定单词后的多个匹配项
regex - multiple matches after a specific word
简化示例:考虑字符串 aabaabaabaabaacbaabaabaabaa
我想匹配中间 c
之后的所有 aa
次 仅 ,使用一个正则表达式。
我最接近的是 c.*\Kaa
,但它只匹配最后一个 aa
,并且只匹配第一个带有 ungreedy 标志的 aa
。
我正在使用 regex101 网站进行测试。
您可以使用
(?:\G(?!^)|c).*?\Kaa
参见regex demo。 详情:
(?:\G(?!^)|c)
- 上一个成功匹配的结尾 (\G(?!^)
) 或 (|
) a c
char
.*?
- 除换行字符外的任何零个或多个字符,尽可能少
\K
- 忘记到目前为止匹配的文本
aa
- aa
字符串。
刚好匹配
aa(?!.*c)
(?!.*c)
是一个 *negative lookahead,在匹配 'aa'
之后,'c'
不会出现在字符串的后面。
简化示例:考虑字符串 aabaabaabaabaacbaabaabaabaa
我想匹配中间 c
之后的所有 aa
次 仅 ,使用一个正则表达式。
我最接近的是 c.*\Kaa
,但它只匹配最后一个 aa
,并且只匹配第一个带有 ungreedy 标志的 aa
。
我正在使用 regex101 网站进行测试。
您可以使用
(?:\G(?!^)|c).*?\Kaa
参见regex demo。 详情:
(?:\G(?!^)|c)
- 上一个成功匹配的结尾 (\G(?!^)
) 或 (|
) ac
char.*?
- 除换行字符外的任何零个或多个字符,尽可能少\K
- 忘记到目前为止匹配的文本aa
-aa
字符串。
刚好匹配
aa(?!.*c)
(?!.*c)
是一个 *negative lookahead,在匹配 'aa'
之后,'c'
不会出现在字符串的后面。