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

Regex 如何删除字符串中的多个字符,regex,string,powershell,expression,Regex,String,Powershell,Expression,我一直在努力寻找将remove命令串在一起的最佳方法,但我不知道如何在一个字符串与多个字符串中实现这一点。。。 我想删除所有空格和下划线;我知道我可以单独这样做: $Name = "\Test Name\Test_Underscore 1_2" $NameFull1 = $NAME -replace '\s' $NameFull2 = $NameFull1 -replace '_','' TestNameTestUnderscore12 并有如下输出: $Name = "\Test Name

我一直在努力寻找将remove命令串在一起的最佳方法,但我不知道如何在一个字符串与多个字符串中实现这一点。。。 我想删除所有空格和下划线;我知道我可以单独这样做:

$Name = "\Test Name\Test_Underscore 1_2"
$NameFull1 = $NAME -replace '\s'
$NameFull2 = $NameFull1 -replace '_',''
TestNameTestUnderscore12
并有如下输出:

$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' | '_',''

我建议将需要删除的字符放入:

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

代码:

[\s\\]
将匹配空格、
\
\

管道符号(
\
)必须位于字符串内,以便进行替换:

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

可能是
$NameFull1=$NAME-替换“[\s\u]”
?结果是
\TestName\test下划线12
。您是否要替换
\
?是的,我想替换字符串中的所有反斜杠。请检查我的答案,我用regext显示了最有效的方法,这正是我要找的。我不知道如何将两者联系起来,但角色类在这方面非常有效!非常感谢。