正则表达式:简单分割字符串的模式

时间:2016-09-22 20:40:36

标签: java regex

我有一个遵循这种模式的字符串:

2/9 (22%)

29可以包含1位或更多位数。我需要解析这两个整数,所以我想出了这个模式:

String patternString = "([0-9]+)/([0-9]+).*";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(stat);

if (matcher.matches()) {
    int i = Integer.parseInt(matcher.group(0));
    int j = Integer.parseInt(matcher.group(2));
}

但是这会因以下错误而崩溃:

java.lang.NumberFormatException: Invalid int: "2/9 (22%)"

表示它匹配第0组的整个字符串。

我也尝试将/字符放在[/]内,但结果相同。

我做错了什么?谢谢!

2 个答案:

答案 0 :(得分:2)

使用组1.组0将匹配整个字符串

int i = Integer.parseInt(matcher.group(1));

答案 1 :(得分:1)

您应该使用group(1)group(2)

group(0)是您在问题中实际陈述的整个字符串