如何删除字符串中的多个字符

时间:2016-04-20 15:05:07

标签: regex string powershell expression

我一直试图找到将删除命令串在一起的最佳方法,但我不理解如何在一个字符串中对多个进行此操作... 我想要删除所有空格和所有下划线;我知道我可以这样单独做这些:

$Name = "\Test Name\Test_Underscore 1_2"
$NameFull1 = $NAME -replace '\s'
$NameFull2 = $NameFull1 -replace '_',''

并有这样的输出:

TestNameTestUnderscore12

但是我想要只做一次,但我不确定如何将它们结合起来(我现在已经好好看了一会儿,却无法找到答案)。

我认为它看起来像这样(我还尝试了其他一些方法),但一直遇到错误......

$Name = "\Test Name\Test_Underscore 1_2"
$NameFull = $NAME -replace '\s' | '_',''

2 个答案:

答案 0 :(得分:2)

我建议将您需要删除的字符放入character class

  

使用“字符类”,也称为“字符集”,您可以告诉正则表达式引擎只匹配多个字符中的一个。只需将要匹配的字符放在方括号中即可。如果您想匹配ae,请使用[ae]。您可以在gr[ae]y中使用此选项来匹配graygrey

代码:

PS> $Name = "\Test Name\Test_Underscore 1_2"
PS> $NameFull1 = $NAME -replace '[\s_\\]+'
PS> $NameFull1
TestNameTestUnderscore12

[\s_\\]将匹配空白,_\

答案 1 :(得分:0)

管道符号(|)必须在里面字符串中进行更改:

$NameFull = $NAME -replace '\s|_', ''