Perl教程
Perl控制语句
Perl高级

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";
}
输出:
Matching
Not Matching

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";
}
输出:
Not Matching
Matching

Perl 匹配运算符与 $_

您也可以将其与特殊的默认变量 $_ 进行匹配。
$_ = "this is lidihuo.";
    if (/java/) {
        print"Matching\n";
    }
    else {
        print"Not Matching\n";
    }
if (/Java/) {
        print"Matching\n";
    }
    else {
        print"Not Matching\n";
    }
输出:
Matching
Not Matching

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";
}
输出:
Matching
Not Matching

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?
输出:
Cu
Na
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
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4