Perl 正则表达式

正则表达式:

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中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值