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

如何让正则匹配的单个字符可同时属于多个匹配结果

正则匹配允许单个字符重复参与多个匹配的解决方案

问题原因

默认正则匹配为消耗型模式:单次匹配完成后,匹配指针会直接跳转至当前匹配结果的末尾,不再回溯复用已匹配过的字符。
你原有正则1(0+)1匹配字符串1010010001时,第一个匹配结果101会消耗掉前3位字符,指针直接落在第3位(索引从0开始计数),原本作为第一个匹配结尾的1无法再作为第二个匹配的开头使用,因此漏过了1001的匹配。

解决方案

使用零宽正向前瞻+捕获组的写法,正则修改为:
(?=(10+1))
提取所有捕获组1的内容,即可得到你预期的3个结果:101、1001、10001。

实现原理

  • (?=...)为零宽正向前瞻语法,仅检查当前位置后方的字符串是否符合规则,不会消耗任何字符,匹配完成后指针仅向后移动1位继续检查,不会跳转到匹配内容末尾
  • 内部括号(10+1)为捕获组,会将前瞻到的符合规则的字符串存入分组1
  • 匹配过程会逐位扫描整个字符串:索引0位置前瞻到101存入分组,索引2位置前瞻到1001存入分组,索引5位置前瞻到10001存入分组,最终得到全部预期结果。

注意事项

该写法的全匹配结果为空字符串,你需要自行提取所有捕获组1的内容作为最终匹配结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:48:02