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

Perl中正则表达式的m运算符,perl,Perl,Perl中m[]和m{}正则表达式之间的区别是什么?1美元、2美元等如何与模式“((Cu)(Na))(Hg))”匹配? 谢谢在m{}和m[]之间没有区别。Perl允许您更改正则表达式的分隔符,以使它们在给定上下文中更易于阅读 $var=~m/*.zip/和$var=~m{*.zip}和$var=~m[*.zip]和$var=~m#*.zip>都以相同的方式匹配 对于捕获组,捕获总是从左到右进行处理,因此对于您的示例: my $foo = 'CuNaHg'; if ( $foo =~ m{(((C

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

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
}

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
}

具体来说,左括号从左到右的顺序,并描述了少数具有特殊意义的匹配定界符(
{}
[]
不具有)。@Grinnz,从技术上讲,
()
有两个特殊之处,
[]
{}
:1)开头定界符不终止模式,2)它们是可嵌套的(例如
m[a[bc]d]
)@ikegami这是真的,也适用于
,但我指的是它所应用的匹配操作的特殊意义,例如,如果使用单引号作为分隔符。还详细介绍了分隔符的引号。特别是左括号从左到右的顺序,并描述了少数具有特殊意义的匹配定界符(
{}
[]
不具有)。@Grinnz,从技术上讲,
()
有两个特殊之处,
[]
{}
:1)开头定界符不终止模式,2)它们是可嵌套的(例如
m[a[bc]d]
)@ikegami这是真的,也适用于
,但我指的是它所应用的匹配操作的特殊意义,例如,如果使用单引号作为分隔符。还将详细介绍引用分隔符。