小编Non*_*ame的帖子

使用外部参数进行Perl正则表达式替换

请考虑以下示例:

my $text = "some_strange_thing";
$text =~ s/some_(\w+)_thing/no_$1_stuff/;
print "Result: $text\n";  
Run Code Online (Sandbox Code Playgroud)

它打印

"结果:没有奇怪的 _粮"

到现在为止还挺好.

现在,我需要从外部源(用户输入,配置文件等)获取匹配和替换模式.天真的解决方案似乎是这样的:

my $match = "some_(\\w+)_thing";
my $repl = "no_\$1_stuff";

my $text = "some_strange_thing";
$text =~ s/$match/$repl/;
print "Result: $text\n";  
Run Code Online (Sandbox Code Playgroud)

然而:

"结果:no_ $ 1 _stuff".

怎么了?如何通过外部提供的模式获得相同的结果?

regex perl substitution

6
推荐指数
1
解决办法
331
查看次数

标签 统计

perl ×1

regex ×1

substitution ×1