仅从数字中删除双引号

Posted

技术标签:

【中文标题】仅从数字中删除双引号【英文标题】:Remove Double Quotes only from Numbers 【发布时间】:2016-02-15 19:01:47 【问题描述】:

我想在 CSV 文件中使用正则表达式删除所有双引号 如果它在双引号之间。目前我正在使用以下正则表达式来执行此操作:仅来自数字而不是字母.. 输入是

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

我试过这个正则表达式

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

但这是删除所有我不想要的双引号。 我只想从数字中删除双引号。

【问题讨论】:

string newcontent = Regex.Replace(contents, @"\"(\d+)\"", "$1"); 【参考方案1】:

您可以使用正则表达式中的捕获组来执行此操作,使用正则表达式 "(\d+)" 并将其替换为捕获的值


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

输出:

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

【讨论】:

不错的快速正则表达式算法;)【参考方案2】:

使用积极的前瞻和后瞻。表示双引号仅在前面的字符或后面的字符为数字时匹配。

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

【讨论】:

当它是“1asd3”时,这也会删除它们吗? 很好,让我看看我能做什么。 @SamiKuhmonen 修复了它。请注意,c# 中的正则表达式与lookbehind 和限定符一起使用。但某些正则表达式引擎可能无法使用它。

以上是关于仅从数字中删除双引号的主要内容,如果未能解决你的问题,请参考以下文章

如何有条件地删除 R 中 write.csv 中的双引号

读取文本文件时,Python可以从字符串中删除双引号吗?

EXCEL中双引号和单引号中的数字有啥区别

正则表达式删除由双引号划定的 CSV 字段中的双引号

使用 regexp_extract 从 BigQuery 中删除单引号和双引号

如何删除单引号并将双引号放在javascript中的对象数组中[关闭]