用于替换powershell中的字符串的正则表达式

时间:2014-05-07 10:56:41

标签: .net regex powershell

我有下面给出的某些字符串

PS C:\Users> $S1="PS CUT (ZIP ONLY),  ALWAYS chose for MARTIO"
PS C:\Users> $s2="ZINO-IAS CUT"
PS C:\Users> $s3="ZINO-IPS CUT 2"
PS C:\Users> $s4="ZINO-IAS CUT4"
PS C:\Users> $s5="ZINO-IPS"

我想从 CUT 这个词中替换上面的字符串,如下所示

PS
ZINO-IAS
ZINO-IPS2
ZINO-IAS4
ZINO-IPS

请注意,如果 CUT 之后有一个数字,我们就不会删除它。

我尝试了以下代码,但它没有工作

PS C:\Users> $s5 -replace "CUT\s*\w*",""

1 个答案:

答案 0 :(得分:1)

你需要的正则表达式是:

"\s*CUT\s*(\d+)?.*","`$1"

它检查 CUT 之后的可选数字以及任何空格并将其用作替换(由 $ 1 表示)。如果该数字不存在,则用空字符串替换整个匹配。

结果:

[PS]> $s1 -replace "\s*CUT\s*(\d+)?.*","`$1"
PS
[PS]> $s2 -replace "\s*CUT\s*(\d+)?.*","`$1"
ZINO-IAS
[PS]> $s3 -replace "\s*CUT\s*(\d+)?.*","`$1"
ZINO-IPS2
[PS]> $s4 -replace "\s*CUT\s*(\d+)?.*","`$1"
ZINO-IAS4
[PS]> $s5 -replace "\s*CUT\s*(\d+)?.*","`$1"
ZINO-IPS