加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 06:01:09 所属栏目:百科 来源:网络整理
导读:基本上我想这样做: #!/usr/bin/perl$search = qr/(?Xabc)/;$_ = "123 abc 456";s/$search/$+{X} $+{X}/;print; 这样的事情: #!/usr/bin/perl$search = qr/(?Xabc)/;$replace = q($+{X} $+{X});$_ = "123 abc 456";s/$search/$replace/;print; 结果应为123
基本上我想这样做:

#!/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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读