У меня есть строкаPowershell Regex группа захвата не вставлена в замене
"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'' –
изменения кода только -replace '(? <=\\)(?. *? \ S +. *?) (? = \\)', '$ 1' ставит правильный замена, но не необходимый "есть ли для этого символ побега? –
ChadJPetersen
Вам нужно избегать '$' из powershell (поэтому движок регулярных выражений видит это). Используйте '' '' $ 1 '"'. Это также работает с вашей первоначальной попыткой названной группы. –