我试图找出如何创建一个包含字母和数字的搜索字符串。例如CC37000和CCL370191。
我如何在两者之间进行搜索,但只获取CC37000,而只使用前三个字符?
答案 0 :(得分:2)
抱歉,由于我没有足够的声誉,无法添加评论。 @Ansgar Wiechers:你是对的,但他试图获得CC37000,而不是CCL370191。正则表达式应该是:
PS C:\Windows\system32> $str = 'CC37000', 'CCL370191'
PS C:\Windows\system32> $str -match '^CC3'`
CC37000
或者
$str -match '^[a-z]{2}\d'
答案 1 :(得分:1)
使用regular expression仅匹配仅以两个字母开头的字符串:
PS C:\> $s = 'CC37000', 'CCL370191'
PS C:\> $s
CC37000
CCL370191
PS C:\> $s -match '^[a-z]{2}[^a-z]'
CC37000
正则表达式细分:
^
匹配字符串的开头[a-z]
是仅匹配字母的字符类。 PowerShell比较默认情况下不区分大小写,因此您也不必使用[a-zA-Z]
来匹配大写字母(除非您使用-cmatch
运算符)。{2}
恰好匹配前面的表达式2次。[^a-z]
是另一个字符类,但开头的插入符号反映了它的含义,因此它匹配任何字符,除了一个字母。