正则表达式 – 如何从搜索中删除替换访问var?

前端之家收集整理的这篇文章主要介绍了正则表达式 – 如何从搜索中删除替换访问var?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
基本上我想这样做:

#!/usr/bin/perl
$search = qr/(?<X>abc)/;
$_ = "123 abc 456";
s/$search/$+{X} $+{X}/;
print;

这样的事情:

#!/usr/bin/perl
$search = qr/(?<X>abc)/;
$replace = q($+{X} $+{X});
$_ = "123 abc 456";
s/$search/$replace/;
print;

结果应为123 abc abc 456.

可能吗?

$replace需要作为外部变量维护.所以,我不希望内容只是移动到另一个位置.我正在从文件中读取此信息.

解决方法

弄清楚了.我需要对表达式进行双重评估(感谢@Birei指向我的regex evaluate命令.仍然无法在perl文档中找到它但是…不得不谷歌.:()

所以它变成:

#!/usr/bin/perl
$search = qr/(?<X>abc)/;
$replace = q(qq($+{X} $+{X}));
$_ = "123 abc 456";
s/$search/$replace/ee;
print;

猜你在找的正则表达式相关文章