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

如何编写正则表达式匹配两个相同字符a或b之间的内容

正则实现方案

你可以使用带反向引用的正则实现需求,根据匹配目标选择对应写法:

  • 如果需要匹配包含前后a/b边界在内的完整片段,正则为:
    /([ab])(.*?)\1/g
  • 如果只需要提取两个相同边界中间的内容,直接取匹配结果的第二个捕获组即可。
  • 如果要求两个边界之间至少有1个字符(不允许aa/bb这类相邻同字符的空匹配),将正则修改为:
    /([ab])(.+?)\1/g

规则说明

  • ([ab]):第一个捕获组,匹配起始边界,仅允许是字符a或b
  • (.*?):第二个捕获组,非贪婪匹配任意长度任意字符,会尽可能少地匹配内容,直到碰到后续符合规则的结束边界
  • \1:反向引用第一个捕获组的匹配结果,强制要求结束边界和起始边界是同一个字符(同a或同b)
  • 末尾的g是全局匹配修饰符,会找出字符串中所有符合要求的片段,而非仅返回第一个匹配结果

注意:默认正则规则中.不会匹配换行符,如果待匹配内容可能包含换行,需要添加s(dotall)修饰符,写法为/([ab])(.*?)\1/gs

测试用例匹配验证

  • accccca:起始捕获a,末尾找到对应a边界,中间匹配ccccc,整体匹配成功
  • bfffffb:起始捕获b,末尾找到对应b边界,中间匹配fffff,整体匹配成功
  • azzzzzb:起始捕获a后找不到对应a结束边界,无合法b起始边界,匹配失败
  • bttttta:起始捕获b后找不到对应b结束边界,无合法a起始边界,匹配失败
  • ammbmma:起始捕获a,遍历到字符串末尾找到对应a边界,中间匹配mmbmm,从开头a到末尾a的完整片段匹配成功
  • bllalla:开头的b向后查找无对应b边界,继续遍历到第四个字符a,在字符串末尾找到对应a边界,中间匹配ll,仅两个a之间的片段匹配成功

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 02:01:34