Я хотел бы заменить ?
вЗаменить символ из ссылки с PowerShell
"EquipmentInfo["?"] = "<iframe src='http://bing.fr'></iframe>";"
по переменной.
Я попытался это:
(get-content C:\word.txt) -replace '?', '$obj' | Set-Content C:\word.txt
Я хотел бы заменить ?
вЗаменить символ из ссылки с PowerShell
"EquipmentInfo["?"] = "<iframe src='http://bing.fr'></iframe>";"
по переменной.
Я попытался это:
(get-content C:\word.txt) -replace '?', '$obj' | Set-Content C:\word.txt
Я хотел бы использовать позитивный назад ', чтобы обеспечить вам найти правильный знак вопроса. Кроме того, вы должны использовать двойные кавычки на вашей замены, так как вы хотите заменить переменную:
(get-content C:\word.txt -raw) -replace '(?<=EquipmentInfo\[")\?', "$obj" | Set-Content C:\word.txt
Regex используется:
(?<=EquipmentInfo\[")\?
Этот ответ объясняет исходная задача.
jisaak's helpful answer содержит комплексное решение.
Оператор -replace
принимает регулярное выражение в качестве первого операнда на RHS, в котором ?
является так называемая Метасимвол со специальным значением.
Таким образом, использовать буквального?
, вы должны избежать его, используя \
:
(get-content C:\word.txt) -replace '\?', $obj
Примечание: Не используйте '...'
вокруг $obj
, если вы не хотите буквального строки $obj
; как правило, для ссылки переменных внутри строк вы должны использовать "..."
, но здесь это не обязательно.
Простой пример с буквальным:
'Right?' -replace '\?', '!' # -> 'Right!'
Я это тоже попробовать, но не делают PowerShell согласен + (get-content C: \ word.txt) -replace '?', '$ obj' ... + ~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Категория: Инвали dOperation: (?: String) [], RuntimeException + FullyQualifiedErrorId: InvalidRegularExpression – Malmier
Тогда проблема должна лежать в другом месте - см. мой пример. Пожалуйста, добавьте [MCVE (минимальный, полный и проверенный пример)] (http://stackoverflow.com/help/mcve) _ прямо на ваш вопрос_. – mklement0
Ваше решение действительно также, таким образом, поддерживается. Просто захотелось добавить более регулярное выражение для замены. Не знаю, почему он не может запустить его ... –
Спасибо, это работа! – Malmier
++ для твердого решения: также стоит упомянуть, что простая ссылка переменной вообще не требует кавычек. – mklement0