Powershell -Match оператор, не учитывающий выражение регулярного выражения, сконструированный или ошибка - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь использовать оператор -match для сопоставления строки, начинающейся со строчной буквы.

Но

"ABC" -match "^[a-z]" //return true

Я знаю, что существует версия -cmatch, который будет использовать регистрозависимое совпадение.Но так как я заставляю его начинать со строчных букв, разве это не должно работать, даже если я использую - match?

Это ошибка в Powershell?Или это спроектировано так, что -match не будет относиться к делу независимо от того, что?

Если это по определению, почему?

Ответы [ 2 ]

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

Если есть сомнения, прочитайте документацию .

По умолчанию все операторы сравнения не чувствительны к регистру. Чтобы сделать оператор сравнения регистромчувствительный, перед именем оператора укажите c.

. Выделите мое.

Чтобы регулярное выражение совпадало с регистром, вы можете использовать оператор совпадения с учетом регистра (-cmatch):

'ABC' -cmatch '^[a-z]'   # evaluates to $false

или добавьте смешанную конструкцию с возможностью отключения нечувствительного к регистру соответствия вашему выражению, как предложено Wiktor Stribiżew :

'ABC' -match '(?-i)^[a-z]'   # evaluates to $false

Параметры регулярных выражений в различных конструкциях имеют приоритет над поведением операторов по умолчанию.

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

Это дизайн ;по этой причине вам придется спросить Microsoft.

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