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

JavaScript正则正向预查:双abc场景为何匹配第一个abc前置内容?

正则匹配问题解答

你的问题核心在于正则的默认匹配规则和贪婪特性:

  1. 首先,正则里的.默认不匹配换行符
    你的输入文本是:
test 
abc abc

test后面跟着换行符,然后才是abc abc。.+作为贪婪量词,会尽可能多匹配,但因为.不能识别换行,所以只能匹配到换行前的test ,此时换行后的第一个abc刚好满足正向预查(?=abc)的条件,所以最终匹配的是第一个abc的前置内容。

  1. 如何匹配到最后一个abc的前置内容?
    如果你想获取到第二个abc之前的所有内容,需要让.能匹配换行符:
  • 开启正则的DOTALL模式(不同语言里开启方式不同,比如Python里加re.DOTALL参数)
  • 或者用[\s\S]+代替.(\s匹配含换行的空白字符,\S匹配非空白字符,合起来覆盖所有字符),写成[\s\S]+(?=abc),这样就能匹配到test \nabc 。
  1. 如果想获取每个abc的前置内容
    需要用非贪婪量词.*?并开启全局匹配,正则写成.*?(?=abc),这样就能分别匹配到test 和第二个abc前的空格 。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:01:06