如何在Perl中规范化Windows文件路径?

Dr.*_*ust 1 windows perl filepath backslash

更新:

我可以把这个问题解决成一个更简单的问题:

我想弄清楚正确的正则表达式是用两个反斜杠替换任何一次反斜杠的情况.

我想转此:

vlc.plugin.path = C:\Program Files\JekyllV0.9.2\\VLC_1.0.0\\plugins
Run Code Online (Sandbox Code Playgroud)

成:

vlc.plugin.path = C:\\Program Files\\JekyllV0.9.2\\VLC_1.0.0\\plugins
Run Code Online (Sandbox Code Playgroud)

原始问题:

我想使用Perl Regex在文件中更改以下内容:

  • 所有出现的单个反斜杠到两个反斜杠
  • 所有出现的单个正斜杠到两个反斜杠

我尝试了以下方法:

perl" -p -i.orig -e "s#\\#\\\\#g" -e "s#/#\\\\#g" %VIDEOLOG_PROPERTIES_FILE%
Run Code Online (Sandbox Code Playgroud)

%VIDEOLOG_PROPERTIES_FILE%包含的位置:

vlc.plugin.path = C:\Program Files\JekyllV0.9.2/VLC_1.0.0/plugins
Run Code Online (Sandbox Code Playgroud)

cha*_*aos 6

对于基本替换:

perl -p -i.orig -e "s#[/\\]#\\\\#g" %VIDEOLOG_PROPERTIES_FILE%
Run Code Online (Sandbox Code Playgroud)

要仅替换与同一字符的另一个实例不相邻的斜杠和反斜杠:

perl -p -i.orig -e "s#(?<!/)/(?!/)#\\\\#g; s#(?<\\)\\(?!\\)#\\\\#g" %VIDEOLOG_PROPERTIES_FILE%
Run Code Online (Sandbox Code Playgroud)