【发布时间】:2016-10-25 19:50:56
【问题描述】:
我想问是否可以在带有“e”修饰符的替换匹配表达式的 RHS 中放置另一个正则表达式。
例如,我想将 $foo 中存储的任何单词替换为 相同数量的“-”,不区分大小写。
例如:
$str =~ s/($foo)/$temp = $1; $temp ~= s/./-//gie;
但是编译的时候经常报语法错误,而
$str =~ s/($foo)/$temp = $1; $temp = "---"/gie;
确实有效。
我想我没有正确地避开斜线,有什么想法吗?
【问题讨论】:
-
只需更改分隔符:
s/.../$&=~s%...%...%r/e(您当然需要/e修饰符)。不过,您的代码很奇怪,也许您应该多解释一下您要做什么,以便我们提供更多帮助。特别是,$1是 undef,即使它被定义,如果没有/r修饰符,你的嵌套正则表达式也是无用的。 -
非常感谢! s%%%r 表达式运行良好。这正是我一直在寻找的,而我在其他文档中没有找到。
-
@VittVolt:
%的意义在于它与主要封闭正则表达式中使用的/不同。您也可以使用其他正则表达式分隔符。
标签: regex perl expression