找回密码
 注册
查看: 9035|回复: 0

perl语言正则表达式使用/g 进行全局替换

[复制链接]
发表于 2011-11-14 20:48:12 | 显示全部楼层 |阅读模式
本帖最后由 xiaoliu 于 2011-11-14 20:49 编辑

在前面的例子中你可能已经注意到,s///值进行一次替换,无论是否还有地方还能匹配上。当然,这只是默认的行为。修饰
符/g 要求s///将不相重叠◆的所有匹配上的部分都进行替换:
◆它是不相重叠的,因为每一次新的匹配都是从最近匹配成功的地方之后开始进行的。
$_ = “home, sweet home!”;
s/home/cave/g;
print “$_\n”; # “cave, sweet cave!”;
全局替换的一个常用地方是将多个空格用单个空格替换掉:
$_ =“Input data\t may have extra whitespace.”;
s/\s+/ /g; #现在是“Input data may have extra whitespace.”
现在已经知道怎样去掉多余的空格,那怎样去掉开头和结尾的空白呢?这是非常容易的:
s/^\s+//; #将开头的空白去掉
s/\s+$//; #将结尾的空白去掉
我们可以使用/g,只用一步来完成,,但这可能影响效率,至少在我们写作此书时是这样。正则表达式通常是可被优化的,
想了解更多的信息,可以参看《掌握正则表达式》(Mastering Regular Expressions)(O’Reilly),其中有关于如何使正则表达式
更快(或者更慢)的讨论。
s/^\s+|\s+$//g; #将开头,结尾的空白去掉


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-11-21 23:46 , Processed in 0.032324 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表