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

求匹配奇数个a和奇数个b的正则表达式,请求技术协助

解决方案

你的正则存在两个核心问题:

  • 错误纳入了单个a或b的情况:这类字符串中另一种字符的数量为0(偶数),不符合“a、b数量均为奇数”的要求;
  • 未覆盖中间存在多次ab/ba转换的混合排列场景(比如ababab、aabbbab这类字符串)。

正确的正则表达式

^(?:(aa|bb)|(ab|ba)(aa|bb)*(ab|ba))*(ab|ba)(aa|bb)*$

逻辑解释

这个正则的核心是利用奇偶性翻转的思路:

  • aa或bb:增加偶数个相同字符,不改变a、b的奇偶计数;
  • ab或ba:同时增加1个a和1个b,会翻转两者的奇偶性;
  • 整体结构保证:最终a、b的计数经过奇数次翻转后,从初始的0(偶数)变为奇数,同时允许任意数量的不改变奇偶性的aa/bb片段穿插其中。

匹配验证

  • 符合要求的字符串:ab、ba、aaabbb、ababab、aabbbab → 均可匹配;
  • 不符合要求的字符串:a、b、abba、aabbb → 均无法匹配。

简化写法

如果需要更简洁的版本,也可以使用:

^(?:(aa|bb)*(ab|ba))(?:(aa|bb)*(ab|ba))*(aa|bb)*$

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 17:53:28