Perl中的正则表达式的m运算符

时间:2018-11-06 20:55:59

标签: perl

Perl中的m []和m {}正则表达式有什么区别? $ 1,$ 2等如何与模式“(((Cu)(Na))(Hg))”匹配? 谢谢

1 个答案:

答案 0 :(得分:6)

m{}m[]之间没有区别。 Perl允许您更改正则表达式的分隔符,以使其在给定的上下文中更易于阅读。

$var =~ m/*.zip/$var =~ m{*.zip}以及$var =~ m[*.zip]$var =~ m#*.zip#都以相同的方式匹配。

对于捕获组,捕获总是从左到右进行处理,因此对于您的示例:

my $foo = 'CuNaHg';
if ( $foo =~ m{(((Cu)(Na))(Hg))} ) {
    print $1; # CuNaHg 
    print $2; # CuNa
    print $3; # Cu
    print $4; # Na
    print $5; # Hg
}