为什么字符串替换运算符重复反斜杠(wmic 输入所需)会导致 4 个反斜杠

问题描述 投票:0回答:1

可能需要用双反斜杠替换字符串(例如文件路径)中的每个反斜杠。例如,

wmic
需要这个(例如:https://stackoverflow.com/a/50878476/4582204)。

所以有人可以尝试这个代码

'foo\bar' -replace '\\', '\\\\'

但是它会产生以下带有 4 个反斜杠的结果:

foo\\\\bar

而不是带有 2 个反斜杠的所需结果:

foo\\bar

为什么?

regex powershell replace backslash
1个回答
0
投票

答案(非常全面)在这里:https://stackoverflow.com/a/64771432/4582204(这个问题可能会作为重复问题被关闭)。

但我想简单快速地说出

-replace regex, replacement

regex
是一个正则表达式,需要两个反斜杠
\\
,因为第一个必须转义第二个,但
replacement
是字面意思,不需要转义,所以
\\\\
不是两个转义的反斜杠而是字面上的4反斜杠。

所以正确的代码是:

'foo\bar' -replace '\\', '\\'

虽然乍一看这段代码似乎什么也没做,但它正在做一些事情,因为第一个反斜杠是转义,第二个术语没有转义。

© www.soinside.com 2019 - 2024. All rights reserved.