正则表达式不匹配字符串

时间:2015-09-15 02:37:56

标签: java regex

当我尝试使用下面的正则表达式来获取值时,它不匹配。

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);
}

有人可以告诉我一些解决方案吗?

1 个答案:

答案 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+,它们将匹配相应的xy坐标,我们也已转义(和{{1}匹配括号。对于负值,我们在两个组中都添加了)作为可选字符。