使用Java正则表达式解析包含重复组的表达式

时间:2011-07-15 05:39:03

标签: java regex

我正在尝试从下面的字符串中解析

name1(value1),name2(value2),name3(value3),name4(value4),........”所以它就是

如何以群组递归方式执行此操作?

3 个答案:

答案 0 :(得分:2)

String s = "name1(value1),name2(value2),name3(value3),name4(value4),";

Pattern p = Pattern.compile(".*?\\((.*?)\\)");
Matcher m = p.matcher(s);

while(m.find()){
    System.out.println(m.group(1));
}

答案 1 :(得分:1)

我宁愿使用java String操作来获取值,但如果你想使用正则表达式,你可以使用类似的东西:

[^\(]*\([^\)]*\),

应该相当稳定

你可以在这里测试一下: http://regexr.com?2u7u3

答案 2 :(得分:0)

您可以使用matcher.find,尝试以下内容:

String input = "name1(value1),name2(value2),name3(value3),name4(value4)";

Matcher matcher = Pattern.compile(".*?[(].*?[)]").matcher(input);
while(matcher.find()) {
    System.out.println(matcher.group(0));
}

或者像这样使用String.split

String input = "name1(value1),name2(value2),name3(value3),name4(value4)";
String[] split = input.split(",");