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

正则表达式全局匹配问题:避免分隔符被消耗实现连续匹配

解决方案

用**正向预查(零宽度断言)**就能解决数字被消耗的问题,无需预处理添加特殊分隔符。

适用的正则表达式

(?s)\n(\d{1,3}(?:(?!\n999).)*)(?=\n\d|$)

原理说明

  • (?s):开启单行模式,让.可以匹配换行符,支持跨多行匹配内容
  • \n(\d{1,3}(?:(?!\n999).)*):匹配换行后开头的1-3位数字,然后匹配后续所有内容,直到遇到结束标记\n999为止
  • (?=\n\d|$):正向预查,仅检查后续是否是换行+数字或者文本结尾,不会消耗该数字,确保下一次匹配能直接从下一个数字开头的位置开始

为什么之前的正则不行

你之前用的(?s)\n(\d{1,3}.*?)\d会把下一个块的开头数字当作结束符消耗掉,导致下一次匹配只能从该数字之后的位置开始,所以只能拿到交替的结果。而正向预查是零宽度的,不会占用匹配位置,完美解决了这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:57:58