我有一个字符串
"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\"
有关为何会发生这种情况的任何见解?
答案 0 :(得分:4)
或者
-replace '(?<=\)(?<loc>.*?\s+.*?)(?=\)', '''${loc}'''
或
-replace '(?<=\)(?<loc>.*?\s+.*?)(?=\)', "'$loc'"`
作品
''$ {loc}'''工作的原因是因为''是'的转义序列'(不像正则表达式的其余部分那样)。 ''$ loc'“`工作原因,是因为$需要被转义,以便powershell在将它传递到正则表达式引擎之前不解析它。