Заменить строку в XML-документе подстановочным знаком - PullRequest
0 голосов
/ 23 октября 2019

Я могу заменить строку в документе XML, используя следующий простой код. Это прекрасно работает, когда я знаю предыдущее значение, однако я не буду знать это значение, и у меня возникнут проблемы с использованием подстановочного знака.

Например, это прекрасно работает:

$files = Get-ChildItem "C:\ScriptData.xml"
foreach($file in $files) { 
  (Get-Content $file.fullname) -replace '<Variable Name="%%modelID%%" Value="hello" />', '<Variable Name="%%modelID%%" Value="world" />' |
    Set-Content $file.fullname
}

Однако,когда я ввожу шаблон, код не работает, хотя ошибки нет:

$files = Get-ChildItem "C:\ScriptData.xml"
foreach($file in $files) { 
  (Get-Content $file.fullname) -replace '<Variable Name="%%modelID%%" Value="*" />', '<Variable Name="%%modelID%%" Value="world" />' |
    Set-Content $file.fullname
}

Я думаю, что мне нужно изменить цитаты или использовать escape, но ничего, что я пробовал, не работает.

1 Ответ

2 голосов
/ 23 октября 2019
Команда

-replace ожидает шаблон регулярного выражения. Используйте .*? для соответствия любой строке

-replace '<Variable Name="%%modelID%%" Value=".*?" />'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...