Perl 正则表达式
Perl 正则表达式
正则表达式是定义特定模式的字符串。 perl 正则表达式语法与 awk、grep 和 sed 非常相似。
perl 内部有三个正则表达式运算符:
匹配正则表达式运算符
替换正则表达式运算符
音译正则表达式运算符
Perl 匹配运算符
Perl 匹配运算符有各种修饰符。主要用于将字符串或语句与正则表达式进行匹配。
匹配运算符修饰符
运营商 |
说明 |
cg |
即使全局匹配失败也继续搜索 |
g |
全局搜索所有匹配 |
i |
搜索不区分大小写的匹配 |
m |
如果字符串有换行符,$ 和 ^ 将匹配新行边界而不是字符串边界 |
o |
只允许表达式求值一次 |
s |
使用。匹配换行符 |
x |
在表达式中使用空格 |
Perl 匹配运算符 =~
匹配运算符 =~ 用于匹配给定字符串中的单词。它区分大小写,意味着如果字符串有一个小写字母,而您正在搜索一个大写字母,那么它将不匹配。
$line = "this is lidihuo.";
if ($line =~ /java/){
print"Matching\n";
}else{
print"Not Matching\n";
}
if ($line =~ /Java/){
print"Matching\n";
}else{
print"Not Matching\n";
}
输出:
Perl 匹配运算符 !~
它与前面的相反(=~)。如果字母匹配,则输出不匹配,反之亦然。
$ line = "this is lidihuo.";
if ($line!~ /java/){
print"Matching\n";
}else{
print"Not Matching\n";
}
if ($line!~ /Java/){
print"Matching\n";
}else{
print"Not Matching\n";
}
输出:
Perl 匹配运算符与 $_
您也可以将其与特殊的默认变量 $_ 进行匹配。
$_ = "this is lidihuo.";
if (/java/) {
print"Matching\n";
}
else {
print"Not Matching\n";
}
if (/Java/) {
print"Matching\n";
}
else {
print"Not Matching\n";
}
输出:
Perl 匹配运算符与 m
匹配运算符 m 也用于匹配给定字符串中的单词。
$ line = "this is lidihuo.";
if ($line=~ m[java]){
print"Matching\n";
}else{
print"Not Matching\n";
}
if ($line=~ m{Java}){
print"Matching\n";
}else{
print"Not Matching\n";
}
输出:
Perl Matching Operator with $1, $2...
$1, $2 将根据指定的括号打印单词。
my $word = "CuNaHg";
$word =~ /(((Cu)(Na))(Hg))/;
print"1: $1 2: $2 3: $3 4: $4 5: $5 6: $6\n";
输出:
1: CuNaHg 2: CuNa 3: Cu 4: Na 5: Hg 6:
Perl Matching Operator with ?
它从给定的字符串中打印括号内的匹配字符。
my $word = "CuNaHg";
$word =~ /(?:(Cu)NaHg)/;
print"$1\n"; # prints "Cu"
$word =~ /(?:Cu(Na)Hg)/;
print"$1\n"; # prints "Na"
$word =~ /(?:CuNa(Hg))/;
print"$1\n"; # prints "Hg?
输出:
Perl 替换运算符
替换运算符只是匹配运算符的扩展。它允许替换与一些新文本匹配的文本。
它的基本语法是:
s/oldPattern/newPattern /;
Perl Substitution Operator with s///
在这里,我们用 s///将第一部分中的液体替换为固体。
在第二部分中,'liquid' 被 'solid' 全局替换为 s///g。
$line = "liquid will remain liquid until it is evaporated";
$line =~ s/liquid/solid/;
print"$line\n";
print"\n";
$line = "liquid will remain liquid until it is solidified";
$line =~ s/liquid/solid/g;
print"$line\n";
输出:
solid will remain liquid until it is evaporated
solid will remain solid until it is evaporated
Perl 翻译运算符
翻译运算符类似于替换运算符。但是翻译不使用正则表达式来搜索替换值。
它的基本语法是:
tr/oldLetter/newLetter /;
Perl 翻译运算符替换一个字母
这里,所有的'l'字母将被翻译运算符替换为'z'字母。
$line = "liquid will remain liquid until it is evaporated";
$line =~ tr/l/z/;
print"$line\n";
输出:
ziquid wizz remain ziquid untiz it is evaporated
替换多个字母的 Perl 翻译运算符
这里,所有的 'l' 和 'i' 字母都将替换为 'z' 和 'x' 字母通过翻译操作员。
$line = "liquid will remain liquid until it is evaporated";
$line =~ tr/li/zx/;
print"$line\n";
输出:
zxquxd wxzz remaxn zxquxd untxz xt xs evaporated