Powershell:通过正则表达式搜索大写字母



所以根据我的测试,在寻找大写字母时,使用[A-Z]毫无价值。

所以这就是交易,我有一个包含三个字符的字符串。

我需要确保这三个字符都是大写字母。

我已经搜索了stackoverflow和网络并尝试了这个:

PS M:> 'ADV' -match '[A-Z]{3}'
True
PS M:> 'adv' -match '[A-Z]{3}'
True
PS M:> 'A' -match '[a-z]'
True
PS M:> 'adv' -match '[A-Z]'
True

这对我来说毫无意义!为什么外壳不工作?

最近自己被这个咬了。

默认情况下,Powershell 将执行不区分大小写的匹配。您需要改用-cmatch

[PS] > 'A' -cmatch '[a-z]'
False
[PS] > 'adv' -cmatch '[A-Z]{3}'
False

只是为了赞美arco444的回答,我只是想通过引用这种行为的原因来解决建设性的批评。虽然它看起来确实相反,但它仍然忠于操作员的默认PowerShell行为。

如果你看一下About_Comparison_Operators它指出:

默认情况下,所有比较运算符都不区分大小写。要制作一个 比较运算符区分大小写,运算符名称前面加上"C"。

-Match当然是这些运营商之一。鉴于默认为不区分大小写,使用前缀字母"i"似乎是多余的,但根据情况,这可能会使用户更清楚地了解代码的意图。

最新更新