Powershell正则表达式捕获组未插入替换中

时间:2015-04-30 16:31:10

标签: regex powershell capture-group

我有一个字符串

"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\"

有关为何会发生这种情况的任何见解?

1 个答案:

答案 0 :(得分:4)

或者

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

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

作品

''$ {loc}'''工作的原因是因为''是'的转义序列'(不像正则表达式的其余部分那样)。 ''$ loc'“`工作原因,是因为$需要被转义,以便powershell在将它传递到正则表达式引擎之前不解析它。