正则表达式需求:匹配含重复非A字符组的A分隔字符串
解决方案
可以用带反向引用的正则表达式直接实现,不需要额外代码配合,核心是通过反向引用确保每个A之间的非A字符组完全一致。
正则表达式
/(A([^A]+)(?:A\2)*A)/
正则解释
A:匹配序列起始的A([^A]+):捕获第一个不含A的字符组(记为分组2),这就是要求的"相同字符组"(?:A\2)*:非捕获分组,重复匹配"A + 分组2的内容",保证后续每个A后面都跟相同的非A字符组A:匹配序列结尾的A
示例验证
对于输入字符串 AxxAxxAbxAx,该正则会匹配到 AxxAxxA,完全符合你的期望输出。
如果需要全局匹配所有符合条件的子串,加上全局标志g即可:
/(A([^A]+)(?:A\2)*A)/g
内容的提问来源于stack exchange,提问作者Raiday
相关产品推荐
相关产品推荐

