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

正则表达式中+在捕获组内外的差异及匹配问题咨询

正则表达式捕获组与量词位置的差异解析

两个正则的核心差异

  • 第一个正则:num=(\d)+$
    这里的量词+是作用在捕获组(\d)之外,逻辑是匹配「单个数字的捕获组」重复1次或多次。
    正则引擎处理时,每重复一次捕获组,就会用新匹配到的数字覆盖之前捕获组的内容。哪怕整个表达式匹配了所有末尾数字(比如829),捕获组最终只保留最后一次匹配的结果——也就是最后一位数字9。

  • 第二个正则:num=(\d+)$
    这里的量词+是作用在捕获组内部的\d上,逻辑是捕获组直接匹配「连续的1个或多个数字」。整个连续数字序列会被一次性匹配并存入捕获组,不会出现内容覆盖,所以能拿到完整的页码829。

为什么最初匹配到的是最后一位而非第一位?

正则引擎的贪婪匹配会让(\d)+尽可能匹配所有末尾数字,但捕获组的特性是:每次重复捕获组时,都会更新捕获组的内容。比如匹配num=829时,捕获组会依次被8、2、9覆盖,最终留存的是最后一次匹配的结果,而非第一次。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 19:57:10