2014-10-26 2 views
0

Вот пример. Попытка повторно вставить захваченный субдомен, но это вызывает проблему, поскольку родительский домен начинается с числа.группа захвата повторно взамен рядом с номером

'127.0.0.1 test.2domain.com' -replace '127.0.0.1 (.*)2domain.com', '192.168.1.1 $12domain.com' 

Если вы поместили пробел, переменная регулярного выражения будет корректно расширяться, но она также вставляет пробел.

'127.0.0.1 test.2domain.com' -replace '127.0.0.1 (.*)2domain.com', '192.168.1.1 $1 2domain.com' 

Я знаю, что могу просто сделать другой заменить на данный момент, чтобы избавиться от него, я хотел бы, чтобы хоть знать, если есть способ сделать первый пример?

ответ

1

Вы можете поместить -replace код внутри subexpression $(...):

PS > "$('127.0.0.1 test.2domain.com' -replace '127.0.0.1 (.*)2domain.com', '192.168.1.1 $1')2domain.com" 
192.168.1.1 test.2domain.com 
PS > 

Заметьте также, что я использовал кавычки "..." вложить строку. Вы нуждаетесь в них так, чтобы оценивалось подвыражение.

+0

удивительного, спасибо. –

3

В качестве альтернативы, вы можете обернуть остальную часть регулярного выражения в группе его собственного, как:

PS > '127.0.0.1 test.2domain.com' -replace '127.0.0.1 (.*)(2domain.com)', '192.168.1.1 $1$2' 
192.168.1.1 test.2domain.com 
+0

Приобретено за хорошую альтернативу –

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