能懒则懒,不要贪婪

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

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

#用懒惰模式匹配单引号间的内容
$_="This 'test'  isn't sucessful?";

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

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

原文地址:https://www.cnblogs.com/tjxwg/p/2988328.html