Perl中的m []和m {}正则表达式有什么区别? $ 1,$ 2等如何与模式“(((Cu)(Na))(Hg))”匹配? 谢谢
答案 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
}