正则表达式 - 仅在大括号内标识双引号

时间:2016-12-06 21:18:41

标签: r regex string csv

我对正则表达式的问题感到非常难过。我有一个逗号分隔文件,其中一些字段是一个用两个双引号括起来的值数组。这些双引号搞乱了我的表读取功能,我需要一个正则表达式来识别这些双引号,以便我可以删除它们。

仅供参考 - 我使用的语言是R,但我不认为这是相关的。

例如,文件如下所示:

val1,,,val4,val5,"this is another value","{""Value 1"",Value2,""Value 3"",Value4,Value5}"

我想删除括在大括号内的两个双引号,但保留其他所有内容。

我想要一个正则表达式来识别这两个双引号,以便我可以使用替换函数来删除它们。我希望输出为:

val1,,,val4,val5,"this is another value","{Value 1,Value2,Value 3,Value4,Value5}"

与上面相同,但在大括号内没有双引号。

非常感谢任何帮助。如果你认为我应该采取另一种方式,请随意提供不同的方法。

2 个答案:

答案 0 :(得分:5)

看起来这样可以解决您的问题...如果您只是尝试摆脱匹配那些双引号

\"\"

RegEx Example

答案 1 :(得分:1)

一种方法是分离和重新组合字符串:

x <- 'val1,,,val4,val5,"this is another value","{""Value 1"",Value2,""Value 3"",Value4,Value5}"'

x2 <- paste0(gsub('(.*\\{).*', '\\1', x),    # capture up to {
             gsub('"', '', gsub('.*\\{(.*)\\}.*', '\\1', x)),    # remove quotes of inside {}
             gsub('.*(\\}.*)', '\\1', x))   # capture after }

cat(x2)
#> val1,,,val4,val5,"this is another value","{Value 1,Value2,Value 3,Value4,Value5}"