Powershell Inverse заменяет Regex - PullRequest
0 голосов
/ 18 апреля 2020

Сценарий Powershell 7.0: я хочу отменить регулярное выражение, которое я использовал в replace.

У меня есть что-то вроде этого:

$a = $_.BaseName -replace 'REGEX', ''

Имена здесь в этом шаблоне ( случайные - это случайные символы и числа разной длины):

random A00B00 random

, где все числа разные. Я могу использовать A[0-9][0-9]B[0-9], чтобы соответствовать тому, что я хочу, но затем я заменяю только то, что хочу.

Я хочу, чтобы строка после команды была A00B00, а не random random.

Я пытался использовать различные регулярные выражения, но у меня ничего не получалось

1 Ответ

1 голос
/ 18 апреля 2020

У вас есть несколько вариантов достижения того, что вы ищете.

Один из способов go - использовать регулярное выражение, оглядываясь по сторонам, и заменять то, что вы не хотите:

'random A00B00 random' -replace '(?<=^).*(?=A\d{2}B\d{2})' -replace '(?<=A\d{2}B\d{2}).+'

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

'random A00B00 random' -replace '.+(A\d{2}B\d{2}).+','$1'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...