2016-12-06 154 views
0

我完全被正则表达式的问题困住了。我有一个逗号分隔的文件,其中一些字段是用两个双引号括起来的值数组。这些双引号搞乱了我的表读功能,我需要一个正则表达式来标识这些双引号,以便我可以将它们删除。正则表达式 - 仅在大括号内标识双引号

仅供参考 - 我使用的语言是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}" 

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

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

回答

5

看起来这将解决您的问题...如果你只是想摆脱比赛的那些双引号

\"\" 

RegEx Example

+0

在R:'GSUB( ' “”', '',X)' – alistaire

+0

非常简单的方法,其工作。谢谢! – SeaChange

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}"