【问题标题】:Extract multiple tokens from json path using Regex使用正则表达式从 json 路径中提取多个标记
【发布时间】:2019-04-09 07:40:16
【问题描述】:

我必须从需要使用正则表达式匹配的文本中提取标记。示例文本是这样的。

data.orderType.`order.created.time`

现在我正在使用以下正则表达式来标记这个字符串。

`(.*?)`|[^.]+

这个正则表达式对字符串进行部分标记,并给出标记为

data,orderType,`order.created.time`

这里的问题是当标记被取走时,反引号也被包括在内。我怎样才能转储反引号并得到以下内容?

data,orderType,order.created.time

【问题讨论】:

    标签: java regex token


    【解决方案1】:

    您已经捕获了反引号之间的部分,如果它参与了比赛(=如果匹配),请抓住 matcher.group(1)

    Java demo:

    String s = "data.orderType.`order.created.time`";
    String regex = "`([^`]*)`|[^.`]+";
    List<String> result = new ArrayList<>();
    Matcher m = Pattern.compile(regex).matcher(s);
    while (m.find()) {
       if (m.group(1) != null) {
           result.add(m.group(1));
       } else {
           result.add(m.group());
       }
    }
    System.out.println(result);
    // => [data, orderType, order.created.time]
    

    请注意,我还在否定字符类中添加了一个反引号 [^.`]+,因为我假设反引号只能配对。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-03
      • 1970-01-01
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多