Передача строки включала знаки доллара в - Переменная Замены

Я пытаюсь заменить предложение в .config файле с помощью powershell.

${c:Web.config} = ${c:Web.config} -replace

'$BASE_PATH$\\$Test_TYPE' Test\bin' $\\WebTest.dll', 'c:\program Files\example\webtest.dll'

Каждый раз я пытаюсь выполнить вышеупомянутый код, который я получаю

"Шаблон недействительного регулярного выражения: $BASE_PATH$\\$Test_TYPE$Test\bin\\\WebTest.dll" в c:\tests\runtesting.ps1 - замена <<<<$BASE_PATH$\\$Test_TYPE$Test\bin\\\WebTest.dll

Если я не буду использовать обратную галочку, то знаки доллара исчезнут и некоторый текст.

Как я передал бы знаки доллара в строке к - замена?

6
задан JasonMArcher 24 May 2011 в 16:27
поделиться

2 ответа

Это о том, как сбежать регулярные выражения . Каждый специальный символ (особый в отношении регулярных выражений), такой как $ , должен быть экранирован с помощью \

'$A$B()[].?etc' -replace '\$|\(|\)|\[|\]|\.|\?','x'
'$BASE_PATH$\Test\bin$Test_TYPE$\WebTest.dll' -replace '\$BASE_PATH\$\\Test\\bin\$Test_TYPE\$\\WebTest.dll','something'

Обратный апостроф будет использоваться, когда регулярное выражение будет таким:

'$A$B' -replace "\`$",'x'
5
ответ дан 9 December 2019 в 22:34
поделиться

Для передачи:

$BASE_PATH$\Test\bin\$Test_TYPE$\WebTest.dll

Изменить на:

`"\`$BASE_PATH\`$\\Test\\bin\\\`$Test_TYPE\`$\\WebTest.dll"`

Логика:

  • Перед каждым знаком доллара введите \ `
  • Перед каждым знаком обратной косой черты введите другой обратная косая черта \
  • Закрывайте строку двойными кавычками ""
4
ответ дан 9 December 2019 в 22:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: