我試圖在文本文件中匹配文件路徑並將它們替換爲它們的共享文件路徑。例如。字符串"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