0

我有一个字符串

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\"

我正试图逃离其中的空间并变成

"C:\'Program Files (x86)'\'Microsoft Visual Studio 10.0'\Common7\IDE\"

我的正则表达式代码是

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\" -replace '(?<=\\)(?<loc>.*?\s+.*?)(?=\\)', "'${loc}'"

但由于某种原因,我的输出是

"C:\''\''\Common7\IDE\"

关于为什么会发生这种情况的任何见解?

4

1 回答 1

4

任何一个

-replace '(?<=\)(?<loc>.*?\s+.*?)(?=\)', '''${loc}'''

或者

-replace '(?<=\)(?<loc>.*?\s+.*?)(?=\)', "'$loc'"`

作品

'''${loc}''' 起作用的原因是因为 '' 是 ' 的转义序列(而不是 \' 像其他正则表达式)。"'$loc'"` 起作用的原因是因为需要对 $ 进行转义,以便 powershell 在将其传递到正则表达式引擎之前不会对其进行解析。

于 2015-04-30T16:48:16.330 回答