PowerShell - 替换方括号?

时间:2015-02-24 19:59:18

标签: regex powershell replace

所以我最近了解到要删除带有-replace的花括号,我需要将它们括在方括号中。像这样:

$server = '{Server123}'
$server -replace '[{}]',''

那么,我心里想知道,我们如何删除方括号?

$server1 = '[Serverxyz]'

我尝试使用正斜杠,反斜杠,使用更多的方括号,括号,花括号,将每个方括号放入变量并替换变量。

我什么都没有。我找到了几个关于该过程的在线资源,但它们是用于Javascript,C ++或PowerShell以外的其他工作。

3 个答案:

答案 0 :(得分:4)

如果要在字符集中包含方括号,请先将方括号括起来:

PS C:\> $server1 = '[Serverxyz]'
PS C:\> $server1 -replace '[][]',''
Serverxyz

这是有效的,因为字符集为[,然后是一个或多个字符]。只要你将]作为字符集中的第一个字符,它就不能成为终止符,然后你就可以把它想要的任何其他字符放在它之后。

或者,您可以转义结束方括号:

PS C:\> $server1 -replace '[[\]]',''
Serverxyz

但传统的'方法是先放上方块,避免不必要的逃脱。

答案 1 :(得分:2)

-replace运算符使用正则表达式模式,其中[]具有特殊含义(它们表示字符集)。因此,您需要转义字符集中的右括号]

PS > $server1 = '[Serverxyz]'
PS > $server1 -replace '[[\]]',''
Serverxyz
PS > 

这让PowerShell知道它是一个文字结束括号,而不是字符集的结尾。

答案 2 :(得分:0)

我知道这是一个老问题,但我需要删除方括号并发现:

$server1 = $server1 -replace [regex]::escape('[');
$server1 = $server1 -replace [regex]::escape(']');
$server1

输出将是:

Serverxyz