加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl 正则表达式

发布时间:2020-12-16 00:04:19 所属栏目:大数据 来源:网络整理
导读:正则表达式: 1.标量环境下的替换(无修饰符) 这种情况的代码看起来如下所示: if($string =~ s" a" b") {print:" Substituted Correctly" ;} 程序会打印Substituted Correctly,当字符串实际上匹配后给if返回l。同时它也会把a的所有实例替 换为b。 2.在

正则表达式:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读