首页 > 解决方案 > 正则表达式匹配像 ababba 这样的字符串

问题描述

编写一个表达式来匹配字符串,如a, aba, ababba,ababbabbba等。连续的数量b在每个之后一个接一个地增加a

我正在学习正则表达式并在这个正则表达式测验中苦苦挣扎了好几天,但仍然不能完全正确。

根据描述,正则表达式应该匹配并失败以下情况:

通过案例:

失败案例:


是我到目前为止尝试过的

^a((b(?2)?)a)?(?1)*$

我正在考虑使用递归,但我不知道如何使递归b在每个a满足后只添加一个。所以我的解决方案也通过了abba等等ababbba

有任何想法吗?我错过了什么?

标签: regexpcre

解决方案


基于@Michails 很好的答案- 我玩并试图让它低于 12 个字符。带 10 个(演示)

(b\1|^a)+$

我仍然想知道,如果它工作正常。使用 start anchor (demo)肯定会更快。


推荐阅读