Powershell - 匹配运算符不尊重正则表达式,通过设计或错误

LeY*_*LeY 2 regex powershell

我正在尝试使用 -match 运算符来匹配以小写字母开头的字符串。

"ABC" -match "^[a-z]" //return true
Run Code Online (Sandbox Code Playgroud)

我知道有一个版本-cmatch将使用区分大小写的匹配。但由于我强制它以小写开头,所以即使我使用它也应该工作吗- match

这是 Powershell 上的错误吗?或者是有意为之,-match无论如何都不会尊重案件?

如果是故意的,为什么?

Ans*_*ers 5

如有疑问,请阅读文档

\n\n
\n

默认情况下,所有比较运算符都不区分大小写。要使比较运算符区分大小写,请在运算符名称前面加上c.

\n
\n\n

强调我的。

\n\n

要使正则表达式匹配区分大小写,您可以使用区分大小写的匹配运算符 (-cmatch ):

\n\n
\'ABC\' -cmatch \'^[a-z]\'   # evaluates to $false\n
Run Code Online (Sandbox Code Playgroud)\n\n

或添加一个杂项构造,其中包含禁用与表达式的不区分大小写匹配的选项,如Wiktor Stribi\xc5\xbcew建议的那样:

\n\n
\'ABC\' -match \'(?-i)^[a-z]\'   # evaluates to $false\n
Run Code Online (Sandbox Code Playgroud)\n\n

各种构造中的正则表达式选项优先于运算符的默认行为。

\n