【问题标题】:Regular expression - identifying double quotes only inside of curly brackets正则表达式 - 仅在大括号内识别双引号
【发布时间】:2016-12-06 21:18:41
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: r regex string csv


    【解决方案1】:

    看起来这会解决你的问题...如果你只是想摆脱匹配那些双引号

    \"\"
    

    RegEx Example

    【讨论】:

    • 在 R 中:gsub('""', '', x)
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-10
      • 1970-01-01
      • 2020-10-10
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      相关资源
      最近更新 更多