2012-10-19 61 views
2

我捕捉2组使用正则表达式如下与之匹配代码:通正则表达式选项PowerShell的[正则表达式]类型

[regex]$regex = "^([0-9]{1,20})(b|kb|mb|gb|tb)$" 

$matches = $regex.match($minSize) 

$size=[int64]$matches.Groups[1].Value 
$unit=$matches.Groups[2].Value 

我的问题,我想让它不区分大小写的,我不希望使用正则表达式修饰符。

我知道你可以通过在.NET正则表达式的选择,但我无法弄清楚如何做同样使用PowerShell

回答

5

尝试使用-match代替。例如,

$minSize = "20Gb" 
$regex = "^([0-9]{1,20})(b|kb|mb|gb|tb)$" 
$minSize -match $regex #Automatic $Matches variable created 
$size=[int64]$Matches[1] 
$unit=$Matches[2] 
3

使用PowerShell的-match运算instaed。默认情况下,它是不区分大小写:

$minSize -match '^([0-9]{1,20})(b|kb|mb|gb|tb)$' 

区分大小写的匹配使用-cmatch。

+0

感谢,但接受的答案,从阿奎那为他为我提供了完整的例子 – mishkin

+0

这很好。 –

0

我知道这是真的老了,但你也可以包括(?i)在你的正则表达式,像这样(C匹配势力区分大小写的匹配):

PS H:\> 'THISISSOMETHING' -cmatch 'something' 
False 
PS H:\> 'THISISSOMETHING' -cmatch '(?i)something' 
True