当我尝试使用下面的正则表达式来获取值时,它不匹配。
Pattern pattern = Pattern.compile("(\\d+),\\s(\\d+),\\s(\\d+),\\s(\\d+)");
Matcher matcher = pattern.matcher("(8,0), (0,-1), (7,-2), (1,1)");
while (matcher.find()) {
int x = Integer.parseInt(matcher.group(1));
int y = Integer.parseInt(matcher.group(2));
System.out.printf("x=%d, y=%d\n", x, y);
}
有人可以告诉我一些解决方案吗?
答案 0 :(得分:4)
您可以将(x,y)
与\\((\\d+),(\\d+)\\)
匹配,如果您还想匹配否定值,则可以添加-
作为可选字符。 即。 \\((-?\\d+),(-?\\d+)\\)
Pattern pattern = Pattern.compile("\\((-?\\d+),(-?\\d+)\\)");
Matcher matcher = pattern.matcher("(8,0),(0,-1),(7,-2),(1,1)");
while (matcher.find()) {
int x = Integer.parseInt(matcher.group(1));
int y = Integer.parseInt(matcher.group(2));
System.out.printf("x=%d, y=%d\n", x, y);
}
<强>输出强>
x=8, y=0
x=0, y=-1
x=7, y=-2
x=1, y=1
在\\((\\d+),(\\d+)\\)
我们有两组\\d+
,它们将匹配相应的x
和y
坐标,我们也已转义(
和{{1}匹配括号。对于负值,我们在两个组中都添加了)
作为可选字符。