2015-11-14 136 views
4

我想在CSV文件 中使用正則表達式刪除所有使用雙引號的雙引號。目前我使用正則表達式如下做到這一點:僅僅從數字而不是從字母.. 輸入是僅從數字中刪除雙引號

"000027679","ROMANO","CRYSTAL","S","FT","19990706","19990706","A",,"006901", 

我想這正則表達式

string newcontent = Regex.Replace(contents, @"[\""]", ""); 

但這是刪除所有雙引號我不想要。 我想從數字中只刪除雙引號。

+2

'string newcontent = Regex.Replace(contents,@「\」(\ d +)\「」,「$ 1」);' –

回答

0

使用積極的向前看和向後看。意味着雙引號僅在前面的字符或下一個字符是數字時才匹配。

string newcontent = Regex.Replace(contents, @"(?<=\d+\d)[""]|[""](?=\d+\d)", ""); 
+0

當它是「1asd3」時,它也會刪除它們嗎? –

+0

不錯的接收讓我看看我能做些什麼。 –

+0

@SamiKuhmonen修復它。請注意,C#中的正則表達式與lookbehind和限定符一起使用。但一些正則表達式引擎可能無法使用它。 –

3

你可以捕捉組做的正則表達式,使用正則表達式"(\d+)",並繳獲價值取代它


CODE:

string contents="\"000027679\",\"ROMANO\",\"CRYSTAL\",\"S\",\"FT\",\"19990706\",\"19990706\",\"A\",,\"006901\""; 
string newcontent = Regex.Replace(contents,@"""(\d+)""", "$1");<hr> 

OUTPUT:

000027679,"ROMANO","CRYSTAL","S","FT",19990706,19990706,"A",,006901 
+1

不錯的快速正則表達式算法;) –