Powershell:通过正则表达式搜索Caps

时间:2014-12-04 15:35:50

标签: regex 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

这对我没有意义!套管为什么不工作?

2 个答案:

答案 0 :(得分:2)

最近我被自己咬了。

默认情况下,Powershell会执行不区分大小写的匹配。您需要使用-cmatch代替:

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

答案 1 :(得分:0)

为了赞美arco444的回答,我只是想通过引用这种行为的原因来解决建设性的批评。虽然它似乎反直觉,但仍然适用于运营商的默认PowerShell行为。

如果你看About_Comparison_Operators,它就说明了:

  

默认情况下,所有比较运算符不区分大小写。做一个       比较运算符区分大小写,在运算符名称前加上" c"。

-Match当然是其中一个运营商。在假设不区分大小写的情况下,使用前缀字母" i"似乎是多余的,但根据情况,这可以使用户更清楚代码的意图。