能懒则懒,不要贪婪

一般的规则是,Perl正则表达式默认总会返回它能找到的"最左最长”匹配。像*和+这样表示重复次数的操作符,会吃进尽可能多的字符。这就是我们说的贪婪。

对于任意重复操作符(*,+,{m,n}),在后面加上问号(?)就会变为非贪婪,也称懒惰模式,尽可能匹配尽可能短的字串,一旦匹配成功立即结束。

#用懒惰模式匹配单引号间的内容

$_="This 'test'  isn't sucessful?";



my ($str) = /('.*?')/;

懒惰模式唯一的问题就在于可能会导致效率降低。所以,如无必须,请不要随意使用懒惰模式。

你可能感兴趣的:(能懒则懒,不要贪婪)