2015-11-14 102 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

不错的快速正则表达式算法;) –