【发布时间】:2019-12-21 21:34:46
【问题描述】:
问题:
我必须解析 CSV 文件,引用了一些行。 我已经正确拆分了所有列,我需要删除单引号并替换转义引号。
这里有一些我必须处理的例子:
["] -> []
[""] -> ["]
["""] -> ["]
[""""] -> [""]
["ab"c] -> [abc]
["Venture ""Extended Edition, Very Large"""] -> [Venture "Extended Edition, Very Large"]
这是我目前得到的:
https://regex101.com/r/4uGEzN/1
我尝试使用“Groups”和“Positive Lookahead”编写一些正则表达式,但没有达到结果。可以帮忙吗?
【问题讨论】:
-
你想用
"a",""b"",""""c"""",""""做什么?它似乎不是一个有效的字符串。您可以做的是使用(?m)(?<=,|^)"([^"]*(?:""[^"]*)*)"(?=$|,)匹配逗号之间的任何"....",然后替换为Group 1 值中带有替换的(.replace("\"\"", "\"")) 引号的版本。如果条目是有效的 CSV 字符串,它将起作用。 -
逗号可以忽略,我需要把
"a" ""b"" """"c"""" """" """这样的字符串转换成a "b" ""c"" "" " -
让我们看看所有
"都被转义了 -
嗯,这并没有把事情弄清楚。考虑到标题,我可以建议
.replaceAll("(?<!\")\"(?!\")|(\")\"", "$1")(这是Java)。请参阅this regex demo(抱歉,由于 regex101 已关闭,必须编辑链接) -
这正是我所寻找的。谢谢!
标签: regex