perl 正则匹配

2016年11月9日 11:02 阅读 12 新浪博客
(1)字符串匹配与替换
匹配:m// (还可以简写为 // ,略去 m)
替换:s///
转化:tr///
这三种形式一般都和 =~ 或 !~ 搭配使用(其中 "=~" 表示相匹配,在整条语句中读作 does,"!~"表示不匹配,在整条语句中读作 doesn't),并在左侧有待处理的标量变量。如果没有该变量和 =~ !~ 操作符,则默认为处理 $_变量中的内容。举例如下:
$str = "Ilove Perl";
$str =~m/Perl/; # 表示如果在 $str 中发现 "Perl" 字符串,则返回 "1" 否则返回 "0"。
$str =~s/Perl/BASH/; # 表示将变量 $str 中的 "Perl" 字符串替换为 "BASH",如果发生此替换则返回"1",否则返回 "0"。
$str !~tr/A-Z/a-z/; # 表示将变量 $str 中的所有大写字母转化为小写字母,如果转化发生了则返回 "0",否则返回"1"。

(2)$1、$2...
以数字为名的变量保存的是上一次匹配操作(/pattern/)中,第n个小括号中的原符号所匹配内容。 
$1就是第一对小括号中的原符号所对应的匹配内容,$2就是第二对小括号中的原符号所对应的匹配内容。
   
例如:
my $str = "aaa4zzz7bbb";
$str =~ /(\d)z{3}(\d)/;
print "$1\t$2\n";
输出结果是:4    7