首页 > 解决方案 > Perl 中正则表达式的多个可能匹配项

问题描述

我是 Perl 的新手,正在使用正则表达式。当给定的查询字符串可能有多个匹配时,我无法决定 Perl 如何解决正则表达式匹配的歧义。例如

可用于确定字符串的哪个子字符串与给定正则表达式匹配的完整规则集是什么(可能是示例中提到的可以找到多个匹配项的情况之外的其他情况)?

标签: regexperlregex-greedy

解决方案


*是贪心的,所以它会尝试匹配最长的字符串,只要模式的其余部分仍然可以匹配。所以它会匹配hellohellohello

如果您改用*?它,则它不会贪婪,并且只要其余模式匹配,它将再次匹配最短的字符串。所以m/h.*?o/会匹配hello


推荐阅读