GROOVY - 解析CSV:忽略双引号内的逗号

时间:2017-11-22 18:52:05

标签: csv groovy split

我正在寻找一个常规的正则表达式,能够解析CSV文件而忽略逗号内部双引号。 以下正则表达式在Java中运行良好,但在Groovy中运行不正确:

it.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)")

请你帮我解决这个问题。

我想验证 CSv文件格式,例如以下示例,格式是否正确:

Header1, Header2, Header3
1, 2, 3
4, "5, 6", 7

但在这种情况下,格式无效:

Header1, Header2, Header3
1, 2

我检查Groovy Split CSV但它没有解决我的问题。因为该文章中显示的解决方案在解析csv之后:

Header1, Header2, Header3
1, "2, 3", 4, 5

将匹配:

Header1: 1
Header2: "2, 3"
Header3: 4

它忽略了5!但是我,我想打印出格式不正确的消息。

提前致谢。

1 个答案:

答案 0 :(得分:0)

尝试改变它:

it.split( “(=(?:?[^ \ ”]的 \“[^ \ ”] \“)的 [^ \”] \ $ {1})“)

让我知道。