You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求仅用|和*的正则:匹配{a,b}中ab、ba出现次数均为偶的字符串

首先你的描述里有个小矛盾:你说要匹配“ab和ba出现次数均为偶数”的字符串,但例子里的aba(ab和ba各1次,都是奇数)却被你列为可接受的情况。结合你提到的“字符切换次数为偶数”,推测你实际想要的可能是切换次数为偶数的字符串(也就是ab和ba的总次数为偶数),或者是ab和ba次数奇偶性相同的字符串(同为奇或同为偶)。下面分两种情况给出符合要求的正则表达式,都只用到|和*操作符:

1. 匹配切换次数为偶数的字符串

这类字符串的字符块数量是奇数(比如全a是1块,aba是3块,abba是3块),对应的正则:

(a*b a*)*a* | (b*a b*)*b*
  • 说明:
    • (a*b a*)*a* 覆盖所有以a开头或结尾、切换次数为偶数的字符串,比如aaaa、aba、abba、ababba;
    • (b*a b*)*b* 覆盖所有以b开头或结尾、切换次数为偶数的字符串,比如bbbb、bab、baab;

2. 严格匹配ab和ba次数均为偶数的字符串

这类字符串要求ab和ba的转换次数各自都是偶数,对应的正则:

a* | b* | (abba)*a* | (baab)*b*
  • 说明:
    • a* 和 b* 匹配无任何转换的全a或全b字符串;
    • (abba)*a* 匹配以a开头/结尾、包含偶数次ab和ba转换的字符串(每个abba贡献1次ab和1次ba,重复偶数次后总次数就是偶数),比如abbaabba、aaaaabbaaaaa;
    • (baab)*b* 匹配以b开头/结尾、包含偶数次ba和ab转换的字符串,比如baabbaab、bbbbbaabbbbb;

内容的提问来源于stack exchange,提问作者Elijah Williams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 16:34:56