2017-01-05 5 views
1

Использование REGEX (в PowerShell) Я хотел бы найти шаблон в текстовом файле, который состоит из двух строк и заменить его новым текстом и сохранить пробелы. Пример текста:regex сохранить пробел вместо

ObjectType=Page 
    ObjectID=70000 

Моя строка матча

RunObjectType=Page;\s+RunObjectID=70000 

В результате я хочу

ObjectType=Page 
    ObjectID=88888 

Проблема моя строка замены

RunObjectType=Page;`n+RunObjectID=88888 

возвращается

 ObjectType=Page 
ObjectID=88888 

И мне нужно, чтобы сохранить первоначальный интервал. Чтобы усложнить ситуацию, размер интервала может измениться.

Предложения?

ответ

1

Эффективного использования захват группа и обратная ссылка к этой группе в шаблоне замены:

$s -replace 'RunObjectType=Page;(\s+)RunObjectID=70000', 'RunObjectType=Page;$1RunObjectID=88888' 

Смотрите regex demo

С (\s+), вы захвата всех пробела в буфер группы 1 и затем, используя $1 backreference, значение вставляется в результат.

enter image description here

+0

Спасибо, я знал, что это должно было быть простым, но я не мог видеть его. – Greatscott000

Смежные вопросы