Группы захвата используются в регулярных выражениях для извлечения части совпадения с образцом, когда нам нужно сопоставить их в определенных контекстах.Замена захваченных текстов напрямую не поддерживается, хотя с некоторым кодированием это можно обойти.
Вместо этого используйте группы захвата, чтобы делать то, для чего они предназначены: захватывать то, что вам нужно сохранить, и просто соответствовать тому, что вам нужно
Использовать
$DN -replace '(ThreadGroup\.79357num_threads">).*?(</stringProp>)',"`${1}$test`$2"
ThreadGroup.79357num_threads">
записывается с (ThreadGroup\.79357num_threads">)
в группу 1 и </stringProp>
захватывается с (</stringProp>)
в группу 2.
Замена "`${1}$test`$2"
- это содержимое группы 1 ($1
), затем значение переменной $test
, а затем значение группы 2. Обратите внимание на обратные черты перед $
, необходимые для обработки Powershell.в качестве буквального $
символов, а не строки, экстраполирующей «маркер».
Вам нужно ${1}
, а не $1
, потому что переменная $test
начинается с цифры, а сразу после цифрыобратная ссылка (например, $1
) идентификатор должен быть заключен в фигурные скобки, чтобы избежать двусмысленности с идентификатором группы.