我想问是否可以在带有“e”修饰符的替换匹配表达式的 RHS 中放置另一个正则表达式。
例如,我想将 $foo 中存储的任何单词替换为相同数量的“-”, 不区分大小写。
例如:
$str =~ s/($foo)/$temp = $1; $temp ~= s/./-//gie;
但是编译的时候总是报语法错误,
$str =~ s/($foo)/$temp = $1; $temp = "---"/gie;
确实有效。
我想我没有正确逃脱斜杠,有什么想法吗?
你当然需要e
能够使用的修饰符
$str = 'banana';
$foo = 'na';
$str =~ s/$foo/$&=~s#.#-#gr/ge;
print $str;
See the 在线 Perl 演示 http://ideone.com/lyIEPk
请注意,外部正则表达式使用/
正则表达式分隔符,而内部分隔符包含不同的分隔符(您可以在此处使用您最喜欢的两个)。
The e
修饰符对于外部模式是强制性的,并且您还需要通过r
修饰内部的一个以避免修改只读值 issue.
另请注意,在 Perl v.5.20 之前,您最好避免$&
并将整个图案括起来(...)
捕获组:
$str =~ s/($foo)/$1=~s#.#-#gr/ge;
^ ^ ^^
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)