正则表达式匹配-Java

正则表达式匹配-Java,java,regex,Java,Regex,我从以下格式的文件中获取输入: (int1,int2) (int3,int4) 现在我想在Java代码中读取int1、int2、int3和int4。 如何使用java中的正则表达式匹配来实现这一点。谢谢 String[] ints = "(2,3) (4,5)".split("\\D+"); System.out.println(Arrays.asList(ints)); // prints [, 2, 3, 4, 5] 要避免空值,请执行以下操作: String[] ints = "(2,

我从以下格式的文件中获取输入:

(int1,int2) (int3,int4)
现在我想在Java代码中读取int1、int2、int3和int4。 如何使用java中的正则表达式匹配来实现这一点。谢谢

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]
要避免空值,请执行以下操作:

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

\\\\d*,\\d*\\\\s*\\\\\d*,\\d*\\

\\\\d*,\\d*\\\\s*\\\\\d*,\\d*\\

您可以执行以下操作:

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 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 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+");
这将有助于:

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

你试过什么?您想要得到的值是否总是以int作为前缀?例如,int42,int256等?不,这些是int,比如:2,3,4,5@sp00m我认为int1是唯一的占位符,所以一个例子是1,24,324,42…我试着学习并做到了这一点,但它没有删除逗号,我如何删除它:字符串s=3,4;模式p=模式。编译\\[^\\\\]*\\;匹配器m=p匹配器;whilem.find{System.out.printlnm.group1;}您尝试了什么?您想要得到的值是否总是以int作为前缀?例如,int42,int256等?不,这些是int,比如:2,3,4,5@sp00m我认为int1是唯一的占位符,所以一个例子是1,24,324,42…我试着学习并做到了这一点,但它没有删除逗号,我如何删除它:字符串s=3,4;模式p=模式。编译\\[^\\\\]*\\;匹配器m=p匹配器;whilem.find{System.out.printlnm.group1;}我喜欢这个解决方案。。。它的正则表达式更干净,虽然它对格式要求不高,但如果将[^\\d]+交换为等效的\\d+I喜欢该解决方案,它会变得更简单。。。它的正则表达式更干净,尽管它对格式要求不高,但如果将[^\\d]+交换为等效的\\d,它会变得更简单+