2015-02-24 98 views
1

所以我最近得知要用-replace删除花括号,我需要把它们放在方括号中。像这样:PowerShell - 更换方括号?

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

那么,我的想法是想知道,我们如何去除方括号?

$server1 = '[Serverxyz]' 

我试图与正斜线,反斜线逃逸,使用更多的方括号,括号,大括号,将每个括号到一个变量和更换变量。

我什么都没有提出。我找到了一些关于这个过程的在线资源,但是它们是用Javascript或C++或PowerShell之外的其他工具完成的。

+0

您是否尝试过更换“[”和']'单独而不是一组?可能有一个方法,你传递一个字符,并用其他东西替换它? – CalebB 2015-02-24 20:03:26

回答

2

如果你想在一个字符集把关闭括号第一个括号:

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

这工作,因为一个字符集是[那么一个或多个字符,然后]。只要您将]作为字符集中的第一个字符,它就不能成为终结符,然后您可以在其后放置任何其他字符。

或者你可以逃脱右方括号:

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

但“传统”的方式是首先把方KET,避免不必要的逃跑。

1

-replace运算符使用正则表达式模式,其中[]有特殊含义(它们表示字符集)。所以,你需要躲避右括号]的字符集:

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

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

0

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

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

输出将是:

Serverxyz