regex - 正则表达式匹配像 ababba 这样的字符串
问题描述
编写一个表达式来匹配字符串,如
a
,aba
,ababba
,ababbabbba
等。连续的数量b
在每个之后一个接一个地增加a
。
我正在学习正则表达式并在这个正则表达式测验中苦苦挣扎了好几天,但仍然不能完全正确。
根据描述,正则表达式应该匹配并失败以下情况:
通过案例:
a
aba
ababba
ababbabbba
ababbabbbabbbba
失败案例:
aa
abbaa
aabb
abababa
ababbba
^a((b(?2)?)a)?(?1)*$
我正在考虑使用递归,但我不知道如何使递归b
在每个a
满足后只添加一个。所以我的解决方案也通过了abba
等等ababbba
。
有任何想法吗?我错过了什么?
解决方案
基于@Michails 很好的答案- 我玩并试图让它低于 12 个字符。带 10 个(演示)
(b\1|^a)+$
我仍然想知道,如果它工作正常。使用 start anchor (demo)肯定会更快。
推荐阅读
- python - 使用套接字将 GPS 数据从跟踪器发送到 python 服务器
- qt - QtQuickScene Graph:删除子节点
- asp.net - 验证对 asp:CreateUserWizard 控件的输入
- html - 弯曲最后一行以占用可用的垂直空间
- android - 如何在 Oreo 中创建下载进度通知?
- python - 将给定向量(B)的每个值四舍五入到 A 中最接近的值
- sql-server - 用户“NT AUTHORITY\ANONYMOUS LOGON”的 IIS SQL 链接服务器登录失败
- asp.net-mvc - 通过 Webforms 和 MVC 应用程序共享 Session
- python - 如何在使用 PIL 绘制的句子中设置单个字母或单词的样式?
- security - “shot弹枪解析器”是什么意思?