Как это:
$str -replace '("FirstName":)".*?"', "`$1`"$strFirstname`""
Шаблон ("FirstName":)".*?"
совпадает со строкой "FirstName":
, за которым следует двойной кавычки и самый короткий матч любого символа (.*?
) до следующей двойной кавычки. Скобки создают группу, на которую может ссылаться $1
в заменяющей строке. Из-за двойных кавычек вокруг строки замены эта ссылка должна быть экранирована (`$1
). То же самое касается вложенных двойных кавычек (`"
).
Если вы хотите переменную вместо его значение, чтобы показать в результате, вам нужно, чтобы избежать $
переменной, а также:
$str -replace '("FirstName":)".*?"', "`$1`"`$strFirstname`""
Демонстрация:
PS C:\>$str = '"FirstName":"first name","LastName":"Last name"'
PS C:\>$strFirstname = 'Joe'
PS C:\>$str -replace '("FirstName":)".*?"', "`$1`"$strFirstname`""
"FirstName":"Joe","LastName":"Last name"
PS C:\>$str -replace '("FirstName":)".*?"', "`$1`"`$strFirstname`""
"FirstName":"$strFirstname","LastName":"Last name"
Вы не забыли 'перед $ в заменяющей части? – JPBlanc
@JPBlanc Мое понимание заключалось в том, что он хотел значения переменной, а не самой переменной. Если он хочет переменную, тогда вы правы. Я расширил свой ответ, чтобы охватить это. –
@JPBlanc: Нет. Я хочу вставить переменную вместо имени. Странно, что я знаю, но это то, как они этого требуют. –