regex - 如何规避 Perl 的字符串转义 s///中的替换字符串?

标签 regex perl

我不知道到底该怎么调用它,但我已经能够用两个单行来重现我的问题。

从包含以下内容的文件“test.txt”开始:

foo

运行以下命令后(在 bash 中):

perl -n -e "s/(\w)oo/$1ar/; print;" test.txt

输出是'far'

但是,当我引入一个包含替换字符串的变量时,

perl -n -e '$bar = q($1ar); s/(\w)oo/$bar/; print;' test.txt

输出是'$1ar'。

我需要更改哪些内容才能使第二个程序也输出“far”以及我需要学习哪些关键字才能使这个答案在 Google 上可用?

另外,我尝试将第二个更改为 s///e,但没有效果。

编辑:这不是我真正想问的问题,即 here .

最佳答案

这对我有用(在 bash 中;您可能需要更改引号):

perl -n -e '$bar = "\${1} . ar"; s/(\w)oo/$bar/ee; print;' test.txt

ee 将替换部分评估为文本字符串。见 perlop(1) .

关于regex - 如何规避 Perl 的字符串转义 s///中的替换字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4880888/

相关文章:

perl - 如何将各种尺寸的 TIFF 文件转换为页面尺寸 8.5″×11″ 的统一尺寸 PDF 文件而不损失质量?

multithreading - 锁定 Perl 子例程

arrays - 搜索某个模块以比较数组

python - 匹配 python 正则表达式中的复杂表达式

php - PHP 中更高效的字符串清理正则表达式

java - 使用 MongoDB 3.0 Java 驱动程序聚合框架时,如何在 $project 运算符中使用 $substr 表达式

javascript - 解析 CSS 属性的字符串 - Javascript

ruby - 在逗号之前匹配字符串的正则表达式,除非文本包含一个也由逗号分隔的闭合列表

perl - 防止在哈希中过度写入数据

perl - 如何重新定义 Perl 类方法?