正则表达式拆分(...,...)

时间:2013-02-17 11:25:18

标签: java regex

我是正则表达的新手。我如何从下面的行中分割点数据:

  

((X1,Y1),(X2,Y2),(X3,Y3))

分裂到:

(X1,Y1)
(X2,Y2)
(X3,Y3)

提前致谢:)

2 个答案:

答案 0 :(得分:2)

当引入嵌套括号时,使用正则表达式提取括号或括号内的内容可能很快变得复杂。但仍然在您目前的情况下,您似乎可以使用PatternMatcher类来获得结果(不要尝试split,因为它会稍微复杂一些) :

String str = "((X1,Y1),(X2,Y2),(X3,Y3))";

// The below pattern will fail with nested brackets - (X1, (X2, Y2)). 
// But again, that doesn't seem to be the case here.    
Matcher matcher = Pattern.compile("[(][^()]*[)]").matcher(str);

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

答案 1 :(得分:1)

这是另一个答案的替代方案,它会查找(XXX,YYY)种类型的模式:

String s = "((X1,Y1),(X2,Y2),(X3,Y3))";
Matcher m = Pattern.compile("(\\(\\w+,\\w+\\))").matcher(s);
while(m.find()) {
    System.out.println(m.group());
}