Perl中正则表达式的m运算符
Perl中m[]和m{}正则表达式之间的区别是什么?1美元、2美元等如何与模式“((Cu)(Na))(Hg))”匹配?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
谢谢在
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这是真的,也适用于
,但我指的是它所应用的匹配操作的特殊意义,例如,如果使用单引号作为分隔符。还将详细介绍引用分隔符。