我可以制作两组相同数量的正则表达式匹配吗?

Dav*_*son 6 regex

我想要一个与以下模式匹配的正则表达式:

b
abc
aabcc
aaabccc
Run Code Online (Sandbox Code Playgroud)

但不匹配任何:

ab
bc
aabc
abcc
Run Code Online (Sandbox Code Playgroud)

基本上,组1匹配的次数/(a)*b(c){_Q_}/在哪里_Q_.我知道如何在字符串中稍后匹配第1组内容,但如何匹配第1组计数

alp*_*avo 6

使用这个递归正则表达式:

^(a(?:(?1)|b)c)$|^(b)$
Run Code Online (Sandbox Code Playgroud)

在regex101上演示

正则表达式可以进一步简化为:

^(a(?1)c|b)$
Run Code Online (Sandbox Code Playgroud)

在regex101上演示

交替包括:

  • 基本情况 b
  • a(?1)c匹配的递归情况a,然后递归到组1,然后匹配c.第1组是交替本身,因此它可以包含更多对ac,或者在基本情况下的递归结束b.