2015-02-24 97 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