Write an expression to match strings like
a
,aba
,ababba
,ababbabbba
, etc. The number of consecutiveb
increases one by one after eacha
.
我正在学习正则表达式,并在几天的正则表达式测试中苦苦挣扎,但仍然不能完全正确。
根据描述,正则表达式应匹配并在以下情况下失败:
合格案例:
a
aba
ababba
ababbabbba
ababbabbbabbbba
失败案例:
aa
abbaa
aabb
abababa
ababbba
这是what I tried so far
^a((b(?2)?)a)?(?1)*$
我正在考虑使用递归,但是我不知道如何在满足每个b
后仅添加一个a
来实现递归。所以我的解决方案还传递了abba
和ababbba
等。有任何想法吗?我错过了什么?
最佳答案
基于@Michails great answer-我玩游戏并尝试将其设置为12个字符以下。 With 10 (demo)
(b\1|^a)+$
我仍然想知道它是否工作正常。它肯定是faster with start anchor (demo)。
关于正则表达式匹配ababba等字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64748441/