正则表达式匹配:贪婪量词与引擎机制解析
1. 标准量词的贪婪特性
标准量词(如 ? 、 + 、 * 和 {min,max} )具有贪婪特性。当这些量词作用于子表达式时,存在最小匹配次数和最大尝试匹配次数。贪婪量词总是尝试尽可能多地进行匹配,只有在后续正则表达式部分匹配失败时,才会放弃部分匹配。
例如,使用 \b\w+s\b 匹配以 s 结尾的单词, \w+ 会先尝试匹配整个单词,但为了让 s 也能匹配, \w+ 必须放弃部分匹配。
再看 [0-9]+ 在 “March 1998” 中的匹配情况,匹配到 1 后,由于 + 是贪婪的,它会继续匹配 998 ,直到字符串结束。
2. 贪婪特性的应用示例
- 邮件主题匹配 :使用
^Subject: (.+)可以通过工具的括号记忆功能(如 Perl 中的$1)获取邮件主题文本。.*是贪婪的,会尽可能多地匹配字符,从而填充$1。 - 过度贪婪的问题 :若使用
^Su
正则表达式:贪婪量词与引擎机制解析
超级会员免费看
订阅专栏 解锁全文
57

被折叠的 条评论
为什么被折叠?



