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

时间:2015-08-10 01:15:19

标签: regex

我想要一个符合以下模式的正则表达式:

b
abc
aabcc
aaabccc

但不匹配任何:

ab
bc
aabc
abcc

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

1 个答案:

答案 0 :(得分:6)

使用此递归正则表达式:

^(a(?:(?1)|b)c)$|^(b)$

Demo on regex101

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

^(a(?1)c|b)$

Demo on regex101

交替包括:

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