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中。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |