Perl学习之使用正则表达式处理文件(0 位领导批示)
- 2008-06-5
- 分类:Perl
- 作者:银子
- 2,611 位领导视察
可以通过正则表达式来改变文本。到目前为止,只介绍过怎么匹配模式。现在,我们将向你演示怎样通过模式来改变字符串中相应地部分。
一、使用s///进行替换
如果将 m// 这个模式匹配看作同文字处理器的 查询(search) 类似的功能,那Perl中 s/// 操作的则类似于 查询并替换(search and replace) 。它将替换变量中模式所匹配上的部分。
$_ ="我喜欢打球"; s/很喜欢/不喜欢/; #很喜欢被不喜欢替换掉 print "$_\n";
如果没有匹配上,则什么也不会发生,此变量也不会有任何更改。
s///会返回一个Boolean 值。如果成功替换则返回true;否则返回false。
1.使用 /g 进行全局替换
在前面的例子中你可能已经注意到,s///值进行一次替换,无论是否还有地方还能匹配上。当然,这只是默认的行为。修饰符 /g 要求s///将不相重叠的所有匹配上的部分都进行替换。
$_ = "哇,好大的棉花糖哇!"; s/哇/哟/g; print "$_";
全局替换的一个常用地方是将多个空格用单个空格替换掉。
2.不同的分隔符
如同m//和qw//一样,我们也可以改变s///的分隔符。但这里使用了3个分隔符,因此有些不同。
通常的(非配对的)字符,由于没有左字符和右字符的区别,则可以像使用正斜线(/)那样使用。
如果使用的是配对的字符,也就是说其左字符和右字符不的,则必需使用两对:一对存放模式,一对存放替换的字符串。分隔符甚至可以是不同的。















