+ -
当前位置:首页 → 问答吧 → perl中正则匹配顺序

perl中正则匹配顺序

时间:2011-08-31

来源:互联网

Perl code
$_ = 'three tournaments won';
$_ =~ /tour|to|th/;
print $&;


Pel的正则引擎是表达式主导的,也就是说通过表达式去匹配文本;而且多选结构是按序排列的,也就是先完全匹配tour,如果失败再去匹配to,如果还是失败才去匹配th。这个是我的理解。所以最后的结果应该输出tour。但事实上结果却是th!这是为什么呢?

作者: shihuaqi   发布时间: 2011-08-31

如果字符串中有两个子串可以被匹配,两个子串的起点又不一样,那么起点比较早的会被匹配。
具体到你这个例子,因为th的出现早于tour,所以正则表达式引擎不会浪费时间去搜索后面的文本。

至于你主贴说的“Pel的正则引擎是表达式主导的,也就是说通过表达式去匹配文本;而且多选结构是按序排列的”,完全不知所云。从书上抄的吗?

作者: iambic   发布时间: 2011-08-31