Что эквивалентно оболочке Power поиску регулярных выражений в Python? - PullRequest
0 голосов
/ 03 декабря 2018

Я нашел совпадение регулярных выражений в PowerShell, но не смог найти эквивалент Powershell для регулярных выражений Python.

Ниже приведен пример для Python.

>>> inputstring = "iqn.2007-11.com.storage:srmgrsmisvstvol2-ju7wjffssldf-df-sdf-ewr-v0dd04708bb13b686.000"
>>> match = re.search(r"(\w*-){4}(\w*)", inputstring, re.IGNORECASE)
>>> match.group()
'srmgrsmisvstvol2-ju7wjffssldf-df-sdf-ewr'

1 Ответ

0 голосов
/ 03 декабря 2018

Эквивалент PowerShell вашего кода Python будет выглядеть примерно так:

$inputstring = 'iqn.2007-11.com.storage:srmgrsmisvstvol2-ju7wjffssldf-df-sdf-ewr-v0dd04708bb13b686.000'
if ($inputstring -match '(\w*-){4}(\w*)') {
    $matches[0]
}

Оператор -match (который по умолчанию не учитывает регистр) используется для проверкистрока против регулярного выражения.Если совпадения найдены, то с этими совпадениями заполняется автоматическая переменная $matches.Затем к совпадениям можно получить доступ по индексу: 0 дает полное совпадение, 1 - первую захваченную группу, 2 - вторую захваченную группу и т. Д.

В дополнение к (неявно нечувствительному к регистру) базовой версии (-match) Операторы сравнения PowerShell обычно имеют явные версии с учетом регистра и без учета регистра (-cmatch, -imatch).

$inputstring -match '(\w*-){4}(\w*)'   # case-insensitive
$inputstring -imatch '(\w*-){4}(\w*)'  # case-insensitive
$inputstring -cmatch '(\w*-){4}(\w*)'  # case-sensitive

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

$inputstring -imatch '(?-i)(\w*-){4}(\w*)'  # case-sensitive
$inputstring -cmatch '(?i)(\w*-){4}(\w*)'   # case-insensitive
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...