如何替换regexp匹配并映射Perl中的替换?
-
05-07-2019 - |
题
即:
echo H#97llo | MagicPerlCommand
标准输出:
Hallo
是MagicPerlCommand就像是
perl -pnle "s/#(\d+)/chr(\1)/ge"
(但这不起作用)。
解决方案
在MagicPerlCommand中将 \ 1
更改为 $ 1
。评估替换表达式时, \ digit
反向引用样式不起作用(即 s /// e
)。
这适用于Windows和Linux。
其他提示
根据 j_random_hacker
的答案,您必须使用 $ 1
而不是 \ 1
。
这是因为对正则表达式使用' / e
'修饰符意味着右半部分只是另一个正常的Perl表达式,而不是正则表达式替换。既然它是Perl,你必须使用Perl的语法作为括号参考,而不是通常的正则表达式语法。
不隶属于 StackOverflow