regex - perl 正则表达式从一个文件中提取以用于变量
问题描述
我有一个文件在一行中包含搜索和替换字符串。
我正在阅读该文件,使用 split 分隔搜索和替换字符串并将其应用于变量。
文件:
(.*) pre_$1
Perl 代码:
$str = "a";
$line = < FILEHANDLE>; # Read above file.Contains (.*) pre_$1
my ($ss,$rs) = split /\s/,$line;
$str =~ s/$ss/$rs/ee;
这似乎不起作用。
我试图在网上查看,一个结果很接近,即将替换字符串用单引号和双引号括起来。
IE:
$rs = '"pre_$1"';
如果它在脚本中,这有效,但如果我从文件中读取,我会看到任何替换。
有人可以指出我在这里做错了什么吗?
谢谢。
解决方案
s//$rs/ee
期望$rs
包含有效的 Perl 代码。pre_$1
不是有效的 Perl 代码。期望用户提供 Perl 代码是一个非常糟糕的主意。
解决方案:
use String::Substitution qw( gsub_modify );
gsub_modify($str, $ss, $rs);
推荐阅读
- c++ - C ++解压缩文件,然后压缩解压缩的数据不会给出相同的文件作为结果
- azure-aks - 无法访问 AKS 中的服务
- python - 这是插入排序吗?
- python - 如何使用 re.compile 和 finditer() 函数获取单词的开始和结束索引
- android - Android Studio 4.1.1 不会在 MacOS Big Sur 上启动
- reactjs - React.FC 泛型之一
- ms-access - 在 .NET 中设置 Microsoft Access 数据库中列的验证规则
- flutter - Flutter - 使用 Firestore 实例的 BuildSuggestions(搜索委托)出错
- java - Java:在另一个线程中执行 showOptionDialog 然后退出它会关闭整个应用程序
- javascript - 为什么在安装组件(NextJS)之后触发useEffect?