我试图在文本文件中匹配文件路径并将它们替换为它们的共享文件路径。例如。字符串"X:\Group_14\Project_Security"
我想替换为"\\Project_Security$"
。Perl字符串替换文本文件中的文件路径
由于我使用反斜杠(\
)来转义另一个反斜杠(\\
),但这似乎不适用于匹配文本文件中的路径,所以我在解决语法问题时遇到了问题。
open INPUT, '< C:\searchfile.txt';
open OUTPUT, '> C:\logsearchfiletest.txt';
@lines = <INPUT>;
%replacements = (
"X:\\Group_14\\Project_Security" => "\\\\Project_Security\$",
...
(More Paths as above)
...
);
$pattern = join '|', keys %replacements;
for (@lines) {
s/($pattern)/@{[$replacements{$1}]}/g;
print OUTPUT;
}
不能完全确定发生了什么为"\\\\Project_Security\$"
显示为\\Project_Security$"
正确。
所以我觉得问题在于"X:\\Group_14\\Project_Security"
没有评估到
"X:\Group_14\Project_Security"
正确因此不能在文本文件中匹配吗?
任何意见,将不胜感激,干杯。
使用散列的原因是他希望每行对600行搜索字符串和替换进行单次传递,而不必为150,000行中的每一行运行600次正则表达式引擎。查看我刚刚发布的原始问题的链接。 –
我正在通过他的实际问题,而不是发布的代码。他暗示他想要替换这样的路径:“X:\ Group_14 \ Project_Security”,其股份如下:“\\ Project_Security $”“。在这种情况下,我发布的正则表达式会更加高效和可扩展。 – Muttley