如何替换regexp匹配并映射Perl中的替换?

时间:2009-01-07 14:05:49

标签: regex perl substitution

即:

echo H#97llo | MagicPerlCommand

标准输出:

Hallo

是MagicPerlCommand就像是

perl -pnle "s/#(\d+)/chr(\1)/ge"

(但这不起作用)。

2 个答案:

答案 0 :(得分:10)

将MagicPerlCommand中的\1更改为$1。评估替换表达式时,\digit反向引用样式不起作用(即s///e)。

这适用于Windows和Linux。

答案 1 :(得分:4)

根据j_random_hacker答案,您必须使用$1而不是\1

这是因为对正则表达式使用“/e”修饰符意味着右半部分只是另一个正常的Perl表达式,而不是正则表达式替换。既然它是Perl,你必须使用Perl的语法作为括号参考,而不是通常的正则表达式语法。