Получить массив перехватов из поиска по регулярным выражениям в PowerShell - PullRequest
0 голосов
/ 26 ноября 2018

Допустим, у меня есть эта строка:

"14 be h90 bfh4"

И у меня есть этот шаблон регулярных выражений:

"(\w+)\d"

Как в PowerShell получить массив с содержимым {"h", "bfh"}

Ответы [ 3 ]

0 голосов
/ 26 ноября 2018

Немного сокращенная версия:

@(Select-String "[a-zA-Z]+(?=\d)" -Input "14 be h90 bfh4" -AllMatches).Matches.Value
0 голосов
/ 26 ноября 2018

Множество способов снятия шкуры с кошки, о чем свидетельствуют другие ответы.Еще один способ - использование объекта [regex], предоставленного .Net

$regex = [regex] '([a-z]+)(?=\d+)'
$regex.Matches("14 be h90 bfh4") | Select Value
.
0 голосов
/ 26 ноября 2018

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

[a-zA-Z]+(?=\d)

И код PowerShell для того же будет таким,

$str = "14 be h90 bfh4"
$reg = "[a-zA-Z]+(?=\d)"
$spuntext = $str | Select-String $reg -AllMatches |
            ForEach-Object { $_.Matches.Value }
echo $spuntext

Отказ от ответственности: Я едва знаю язык сценариев PowerShell, поэтому вам, возможно, придется настроить некоторые коды.

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