圆括号中的Java Regex

时间:2014-03-22 07:44:19

标签: java regex

我正在尝试解析像这样的输入字符串

String input = "((1,2,3),(3,4,5),(2,3,4),...)"

目的是获取一个String数组,其中每个元素都是一个内部整数集,即

array[0] = (1,2,3)
array[1] = (3,4,5)

为此,我首先得到了这个正则表达式的内部序列:

String inner = input.replaceAll("\\((.*)\\)","$1");

它有效。现在我想获得套装,我正在尝试这个

String sets = inner.replaceAll("((\\((.*)\\),?)+","$1")

但我无法得到我预期的结果。我做错了什么?

1 个答案:

答案 0 :(得分:3)

请勿使用replaceAll删除末尾的括号。而是使用String#substring()。然后再次使用replaceAll来获取单个元素,而不是String#split()

String input = "((1,2,3),(3,4,5),(2,3,4))";
input = input.substring(1, input.length() - 1);

// split on commas followed by "(" and preceded by ")"
String[] array = input.split("(?<=\\)),(?=\\()");

System.out.println(Arrays.toString(array));