我正在尝试从下面的字符串中解析
“name1(value1),name2(value2),name3(value3),name4(value4),........
”所以它就是
如何以群组递归方式执行此操作?
答案 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(",");