ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Non-Greedy and Greedy Quantifier In Perl

Non-Greedy and Greedy Quantifier In Perl

原创 Linux操作系统 作者:物理狂人 时间:2012-04-22 12:45:06 0 删除 编辑
比较以下两个正则匹配:
$_ = "fred and barney went bowling last night ";

1)贪心
/fred.+barney/
过程:首先匹配成功fred,然后.+匹配之后尽量多的信息,即:and barney went bowling last night,随后barney匹配不成功,于是.+往回到字母t,再次匹配barney,还是不成功,继续.+往回直到最后barney匹配成功。

2)非贪心
/fred.+?barney/ 
过程:首先匹配成功fred,然后.+匹配之后尽量少的信息,即:空格,随后barnay匹配不成功,于是.+往前倒a,再匹配barney,还是不成功,继续 .+往前直到最后barney匹配成功。

可以发现:如果fred和barney比较近的时候,用贪心方式效率更好;如果fred和barney分别再两端的时候,用非贪心方式效率更好。

又如:$_ = "I thought you said Fred and Velma, not  Wilma"
如果要删除的修饰符,则
1)s#.+#$1#g 
得到 I thought you said Fred and Velma, not  Wilma

2)s#.+?#$1#g
 得到 I thought you said Fred and Velma, not  Wilma

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24104518/viewspace-721956/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-06-16

  • 博文量
    80
  • 访问量
    159247