正则表达式:
1.标量环境下的替换(无修饰符) 这种情况的代码看起来如下所示:
if($string =~ s" a" b") {print:" Substituted Correctly" ;}
程序会打印Substituted Correctly,当字符串实际上匹配后给if返回l。同时它也会把a的所有实例替
换为b。
2.在标量环境下的替换(g修饰符)
这种情况下返回成功匹配的次数。使用这种方法,如果读者输入以下代码:
($string =~ s" a" b" g) == ($string =~ s" a" b" g)
Perl将告诉读者是否$string中有与$string2中相同数量的a,同时进行替换。
3.在数组环境下的替换(无修饰符)和数组环境下的替换(g标识符)
这两个较烦人。它们实际上做与标量环境下替换相同的工作。
4.在标量环境下的匹配(无修饰符)
这与在标量环境下不带修饰符的替换相同。如果读者输入:
if($line =~ m"a") {print "Matched an a!/n" ;}
它只检查在$line中是否有一个a。如果输入:
if($line=~m" /b(/w+)/b"){print " $l/n";}
这会检查在$line中是否有单词,接着把它存放在$1中,打印它。同时:
($line=~m" /b(/w+)/b")&&(print " $l/n";);
做同样的工作,仅使用短路来打印它。
5.在数组环境下的匹配(无修饰符)
这会匹配正则表达式能匹配的第一个位置,接着简单地把反向引用放入一个可快速访问的表中。例如:
($variable,$equals,$value) = ($line = ~m" (/w+)/s*(=)/s*(/w+)");
该代码取到第一个引用(/w+),使之成为$variable;取到第二个引用(=)使之成为$equals;然后取到第
三个引用(/w+),使之成为$value。
6.在数组环境下匹配(g修姊符)
取到正则表达式,尽可能多地应用它.然后把结果放人到由所有可能匹配组成的数组中,
例如:
$line = '1.2 3.4 beta 5.66';
@matches = ($line =~m" (\d*\.\d+)" g);
将使@matches等于1.2,3.4,5.66。g修饰符完成迭代,首先匹配1.2,其次是3.4,第三是5.6。数组。
7.标量环境下的匹配(g修饰符)
最后,如果在标量环境下使用匹配运算符,那么读者得到与在正则表达式世界中甚至是在Perl世界中完
全不同的行为。这就是我们谈到的“迭代”行为。如果输入以下代码:
$line = " BEGIN <data> BEGIN <data2> BEGIN <data3>";
while($line =~ m" BEGIN(.*?)(?=BEGIN|$)" sg)
{
push(@blocks, $l);
}
这将匹配<data>,随后在接下来的while迭代中把它加载@blocks中。