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

正则表达式匹配疑问:为何两种.+模式均能匹配目标字符串?

正则匹配问题解析

目标字符串:

Marius Müller Osterhase

两种匹配成功的正则模式:

  1. Marius .+Osterhase
  2. Marius .+ Osterhase

为什么两种模式都能匹配?

贪婪模式的.+确实会优先匹配尽可能多的非换行字符,但它有个关键特性:当后续匹配失败时会自动回溯,逐步减少匹配的字符长度,直到找到能让整个正则匹配成功的位置。

  • 对于第一种模式Marius .+Osterhase:
    .+一开始会匹配从Müller到字符串末尾的所有内容(也就是Müller Osterhase),但此时后面没有剩余字符来匹配Osterhase,于是开始回溯,一点点“吐”出字符,直到Osterhase完整出现在剩余字符串开头。最终.+匹配的是Müller (包含末尾的空格),后面的Osterhase正好匹配,整个正则成功。

  • 对于第二种模式Marius .+ Osterhase:
    .+先尝试匹配最多字符,直到遇到后面的空格和Osterhase匹配失败,然后回溯,直到.+匹配到Müller(不包含后面的空格),此时剩余的空格正好匹配正则里的空格,接着Osterhase也完美匹配,所以整个正则也成功。

你之前误以为只有中间两个空格的字符串才会匹配,是忽略了贪婪模式的回溯机制——它不会死磕“最多匹配”,而是会调整匹配长度来满足整个正则的匹配要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 14:54:54