Powershell захватывает несколько значений? - PullRequest
0 голосов
/ 03 января 2019

Следующий код возвращает только одно совпадение.

$s = 'x.a,
x.b,
x.c
'
$s -match 'x\.(.*?)[,$]'
$Matches.Count # return 2
$Matches[1] # returns a only

Исключено для возврата a, b, c.

1 Ответ

0 голосов
/ 03 января 2019

Оператор -match находит только первое совпадение. -AllMatches с Select-String извлечет все совпадения на входе. Кроме того, [,$] соответствует буквенным символам , или $, $ не является метасимволом конца строки / строки.

Возможное решение может выглядеть как

 Select-String 'x\.([^,]+)' -input $s -AllMatches | Foreach {$_.Matches} | Foreach-Object {$_.Groups[1].Value}

Шаблон - x\.([^,]+), он соответствует x. и затем захватывает в группу 1 любой один или несколько символов, отличных от ,.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...