正则表达式匹配-Java

我正在以下列格式从文件中获取输入:

(int1,int2) (int3,int4) 

现在我想在我的Java代码中读取int1,int2,int3和int4。 如何在java中使用正则表达式匹配来完成它。 Thankx。

 String[] ints = "(2,3) (4,5)".split("\\D+"); System.out.println(Arrays.asList(ints)); // prints [, 2, 3, 4, 5] 

要避免空值:

 String[] ints = "(2,3) (4,5)".replaceAll("^\\D*(.*)\\D*$", "$1").split("\\D+"); System.out.println(Arrays.asList(ints)); // prints [2, 3, 4, 5] 
 Pattern p = Pattern.compile("\\((\\d+),(\\d+)\\)\\s+\\((\\d+),(\\d+)\\)"); String input = "(123,456) (789,012)"; Matcher m = p.matcher(input); if (m.matches()) { int a = Integer.parseInt(m.group(1), 10); int b = Integer.parseInt(m.group(2), 10); int c = Integer.parseInt(m.group(3), 10); int d = Integer.parseInt(m.group(4), 10); } 

你可以这样做:

 String str = "(1,2) (3,4)"; Matcher m = Pattern.compile("\\((\\d+),(\\d+)\\) \\((\\d+),(\\d+)\\)").matcher(str); if (m.matches()) { System.out.println(m.group(1)); // number 1 ... } 

要构建自己的方法,可以使用更简单的正则表达式:

 String s = "(1,2) (3,4)"; Pattern p = Pattern.compile("\\d+"); Matcher m = p.matcher(s); while (m.find()) { System.out.println(m.group()); } 

这将有效:

 String[] values = s.substring(1).split("\\D+"); 

"\\((\\d*),(\\d*)\\)\\s*\\((\\d*),(\\d*)\\)"