【问题标题】:Regex expression to split a field with multiple values [duplicate]正则表达式拆分具有多个值的字段[重复]
【发布时间】:2018-05-12 20:09:51
【问题描述】:

我想先用“duration=”分割字符串,然后再分割字符串的剩余部分,下面的代码可以做到这一点。现在我想检查字符串的第二部分是否包含任何逗号(,)并相应地拆分该值

        String data = "duration=WEEKLY,MONTHLY";
        pattern = Pattern.compile("duration=(\\S*),(\\S*)", Pattern.CASE_INSENSITIVE);
        matcher = pattern.matcher(data);
        if (matcher.find()) {

            System.out.println(matcher.group(2)); //this prints MONTHLY(as it is group(2))
  }

我想打印“每周,每月”。如何获取整个字符串?

matcher.toMatchResult() 或 matcher.toString() 返回对象实例。

任何帮助将不胜感激。 谢谢

【问题讨论】:

  • String.split 就足够了。首先拆分 = 然后拆分 , 第二个单元格(如果有)。获取未知数量值的正则表达式很复杂。您可以使用正则表达式获取“值”部分,然后根据需要拆分它
  • System.out.println(matcher.group(1));
  • "duration=WEEKLY,MONTHLY".split("duration=")[1].split(",");

标签: java regex


【解决方案1】:

如果您只有一个或两个以上的值,这样的正则表达式将无法正常工作。正则表达式将与 "duration=MONTHLY" 不匹配。

但是您可以使用它来获取“值”部分,然后只需 String.split 即可获取结果

    String data = "duration=WEEKLY,MONTHLY";
    pattern = Pattern.compile("duration=(.*)", Pattern.CASE_INSENSITIVE);
    matcher = pattern.matcher(data);
    if (matcher.find()) {
        String value = matcher.group(1); //get the values
        String[] values = value.split(","); //split on the comma
        for(String s : values){ //iterate the values
            System.out.println(s);
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 1970-01-01
    相关资源
    最近更新 更多