正则表达式用于拆分具有多个值的字段

时间:2017-11-29 07:35:25

标签: java regex

我想首先用" 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()返回对象实例。

任何帮助都将受到高度赞赏。 感谢

1 个答案:

答案 0 :(得分: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);
        }
    }