我是Powershell脚本的新手,我对我遇到的一些行为感到困惑。如果这个问题愚蠢,请提前道歉。
我一直在学习如何使用匹配的示例,并且已经看到了[regex]放在字符串前面的一些示例。我假设(可能是错误地)这是一个演员,明确指出该对象是一个正则表达式。但似乎使用[regex]会改变结果匹配的区分大小写:
PS > $array = 'ABC','DEF','GHI'
PS > $array -match 'DEF'
DEF
PS > $array -match 'def'
DEF
PS > $array -match [regex]'def'
PS > $array -match [regex]'DEF'
DEF
这是怎么回事?什么是[正则表达式]正在做什么,导致区分大小写?
答案 0 :(得分:3)
[regex]'def'
将字符串转换为regex
对象,默认情况下区分大小写。另一方面,PowerShell正则表达式默认情况下不区分大小写。
PS C:\> ('def').GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
PS C:\> ([regex]'def').GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Regex System.Object
答案 1 :(得分:1)
默认情况下,$array -match
调用不区分大小写。
添加[regex]
关键字会启动正则表达式搜索,而正则表达式默认区分大小写。就是这样。