Perl--正则
发布时间:2020-12-15 23:50:21 所属栏目:大数据 来源:网络整理
导读:当用于匹配操作时,有时候 =~ 和 !~ 分别读做“匹配”和“不匹配”(因为“包含”和“不包含”会让人觉得有点模糊)。"hot cross buns" =~ /cross/;print "$`n"; #匹配左边内容print "$n"; #匹配的内容 print "$'n"; #匹配内容右边的文本[oracle@jhoa 2]$
当用于匹配操作时,有时候 =~ 和 !~ 分别读做“匹配”和“不匹配”(因为“包含”和“不包含”会让人觉得有点模 糊)。 "hot cross buns" =~ /cross/; print "$`n"; #匹配左边内容 print "$&n"; #匹配的内容 print "$'n"; #匹配内容右边的文本 [oracle@jhoa 2]$ perl 1.pl hot cross buns 为了有更好的颗粒度和提高效率,你可以用圆括弧捕捉你特别想分离出来的部分。每对圆括弧捕捉与圆括弧内的模 式相匹配的子模式。圆括弧由左圆括弧的位置从左到右依次排序;对应那些子模式的子字串在匹配之后可以通过顺 序的变量 $1,$2,$3 等等获得 [oracle@jhoa 2]$ cat 2.pl $_ = "Bilbo Baggins's birthday is September 22's xxx"; /(.*)'s birthday is (.*)'s(.*)/; print "Person: $1n"; print "Date: $2n"; print " $3n"; [oracle@jhoa 2]$ perl 2.pl Person: Bilbo Baggins Date: September 22 xxx [oracle@jhoa 2]$ cat 3.pl $var="model name: Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz's test"; if( $var =~ /model name.*: (.*)'s(.*)/){print "1--$1,2--$2n";}; [oracle@jhoa 2]$ perl 3.pl 1--Intel(R) Core(TM) i3-2100 CPU @ 3.10GHz,2-- test ?正则修饰词:/i 忽略字母的大小写(大小写无关) [oracle@jhoa 2]$ cat 4.pl $var="AAA"; if ($var =~ /aaa/){print "xxxn";}; [oracle@jhoa 2]$ perl 4.pl [oracle@jhoa 2]$ cat 4.pl $var="AAA"; if ($var =~ /aaa/i){print "xxxn";}; [oracle@jhoa 2]$ perl 4.pl xxx 元字符 "." 匹配除了换行符以外的任何单个字符 [oracle@jhoa 2]$ cat 5.pl $var="aaa"; if ($var =~ /aaa./){print "xxxn";}; [oracle@jhoa 2]$ perl 5.pl [oracle@jhoa 2]$ [oracle@jhoa 2]$ cat 5.pl $var="aaa1"; if ($var =~ /aaa./){print "xxxn";}; [oracle@jhoa 2]$ perl 5.pl xxx [oracle@jhoa 2]$ cat 5.pl $var="aaan"; if ($var =~ /aaa./){print "xxxn";}; [oracle@jhoa 2]$ perl 5.pl [oracle@jhoa 2]$ 此时.号无法匹配回车 [oracle@jhoa 2]$ cat 5.pl $var="aaan"; if ($var =~ /aaa./s){print "xxxn";}; [oracle@jhoa 2]$ perl 5.pl xxx 此时.匹配换行符 /s 令 . 匹配换行符并且忽略不建议使用的 $* 变量 s是将字符串作为单行处理 /m 将待匹配的串视为多行,^符号匹配字符窜的起始和新的一行的起始;$符号匹配任意行的末尾。以下例只匹配第一行为a,否则无法匹配。 /x 忽略模式中的空白,格式清晰 /m 令 ^ 和 $ 匹配随后嵌入的 n。 [oracle@jhoa 2]$ cat 5.pl $var="abc ABC abc"; if ($var =~ s/c$/Z/g){print "$varn"}; [oracle@jhoa 2]$ perl 5.pl abc ABC abZ 不当做多行处理 [oracle@jhoa 2]$ cat 5.pl $var="abc ABC abc"; if ($var =~ s/c$/Z/mg){print "$varn"}; [oracle@jhoa 2]$ perl 5.pl abZ ABC abZ 当成多行处理 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |