所以我最近了解到要删除带有-replace的花括号,我需要将它们括在方括号中。像这样:
$server = '{Server123}'
$server -replace '[{}]',''
那么,我心里想知道,我们如何删除方括号?
$server1 = '[Serverxyz]'
我尝试使用正斜杠,反斜杠,使用更多的方括号,括号,花括号,将每个方括号放入变量并替换变量。
我什么都没有。我找到了几个关于该过程的在线资源,但它们是用于Javascript,C ++或PowerShell以外的其他工作。
答案 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