我有一个要分割的csv文件中的字符串。该字符串可以在双引号或JSON中包含逗号。 例如,如果字符串是:
abc, pq"r,s", {"one":1, "two":2}
正则表达式应将其分为三个标记,如下所示:
我尝试过this regex。
正则表达式如下:(?x)[,](?=([^"]*"[^"]*")*[^"]*$)
任何人都可以建议正确的正则表达式吗?
答案 0 :(得分:0)
以下是适用于您的示例abc, pq"r,s", {"one":1, "two":2}
的正则表达式:
,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)(?=(?:[^{}]*{[^{}]*})*[^}]*$)
或查看此regex101 example
此正则表达式包含三个部分
,
是我们要匹配的逗号(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)
是基于Bart Kiers的主题讨论Java: splitting a comma-separated string but ignoring commas in quotes的展望。 (?=(?:[^{}]*{[^{}]*})*[^}]*$)
是适应{ ... }
的适应性展望。不确定是否可以在其他示例中使用。