有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

json正则表达式,用于在Java中基于逗号拆分字符串

我有一个csv文件中的字符串,我想拆分它。字符串可以在双引号或JSON中包含逗号。 例如,如果字符串为:

abc, pq"r,s", {"one":1, "two":2}

正则表达式应将其拆分为三个令牌:

  1. abc
  2. pq"r,s"
  3. {"one":1, "two":2}

我试过了

正则表达式的内容如下:(?x)[,](?=([^"]*"[^"]*")*[^"]*$)

谁能推荐一个合适的正则表达式吗


共 (1) 个答案

  1. # 1 楼答案

    下面是适用于您的示例abc, pq"r,s", {"one":1, "two":2}的正则表达式:

    ,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)(?=(?:[^{}]*{[^{}]*})*[^}]*$)
    

    或者看看这个regex101 example

    这个正则表达式有三个部分

    1. ,是我们想要匹配的逗号
    2. (?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)是基于Bart Kiers的主题讨论{a2}的前瞻
    3. (?=(?:[^{}]*{[^{}]*})*[^}]*$)是一种适应于处理{}的前瞻性方法

    不确定它是否适用于其他示例