Powershell Select-String: получение результатов по названной группе регулярных выражений - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть эта строка выбора с использованием регулярного выражения, содержащего именованную группу

$m=Select-String -pattern '(?<mylabel>error \d*)' -InputObject 'Some text Error 5 some text'

Команда Select-String выполняет свою работу:

PS > $m.Matches.groups


Groups   : {0, mylabel}
Success  : True
Name     : 0
Captures : {0}
Index    : 10
Length   : 7
Value    : Error 5

Success  : True
Name     : mylabel
Captures : {mylabel}
Index    : 10
Length   : 7
Value    : Error 5

Я могу получить значение совпадающего имениГруппировать с помощью индекса группы, нет проблем:

PS > $m.Matches.groups[1].Value
Error 5

Но я не могу получить тот же результат, используя именованную группу регулярных выражений (mylabel).Я нашел такие утверждения, как $m.Matches.groups["mylabel"].Value, но это не работает на моих машинах (W10 / W2012, PS 5.1)

1 Ответ

0 голосов
/ 22 февраля 2019

Вы получили один правильный ответ в комментарии выше, но вот как это сделать без использования индекса соответствия 0:

$m.Matches.groups | ? { $_.Name -eq 'mylabel' } | Select-Object -ExpandProperty Value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...