2014-03-14 47 views
0

這是一個比PS更正確的RegEx問題。這裏是:使用正則表達式替換PowerShell字符串

我有一個文本文件,數據如下。

ABC Corp, x567 
xyz Corp, y567 
pqr Corp, m567 
ghysds ,inc, x567 
TRWsdsdsds ,org, y567 
TYUds ,ing, m567 

如何從第4-6行中刪除第一個逗號? (這些行有2個逗號,我只需要第二個。)我的計劃是將這些數據插入到一個2列的表格中。

謝謝。

+0

你可以試試這個[鏈接](http://social.technet.microsoft.com/Forums/en-US/63ace2a7-91f0-447d-ba33- bb526518564e/powershell-regular-expressions-replace-operator-disable-the-default-global-option?forum = ITCG):第二個Answer是你想要的。 –

回答

2

你必須使用前瞻來檢查行上是否有第二個逗號。

,(?=.*,) 

使用此來替換它的任何一個空字符串相匹配。這將擺脫它們中有兩個逗號的第一個逗號。

+0

這是最優雅的方式。 –

+0

謝謝卡布!非常好的答案。不幸的是,作爲一個新手,我無法宣傳你的答案。 – RaviLobo

0

你並不需要正則表達式,儘管它可以工作。

$StringList = @('abd,asdc,asdc', 'asdc,awegwe,aweg', 'asdfasdf,asdaweg'); 

foreach ($String in $StringList) { 
    if ($String -match '.*,.*,') { 
     $String.Remove($String.IndexOf(','), 1); 
    } 
    else { 
     $String; 
    } 
} 
1

這裏是我的:

$text = 
(@' 
ABC Corp, x567 
xyz Corp, y567 
pqr Corp, m567 
ghysds ,inc, x567 
TRWsdsdsds ,org, y567 
TYUds ,ing, m567 
'@).split("`n") 

$text -replace '(.+?),(.+?),(.+)','$1$2,$3' 

ABC Corp, x567 
xyz Corp, y567 
pqr Corp, m567 
ghysds inc, x567 
TRWsdsdsds org, y567 
TYUds ing, m567