java:使用正则表达式提取字符串中的数字

时间:2011-05-08 23:46:39

标签: java regex matching

我有一串格式“[232] .......”我想从字符串中提取232,我做了这个

public static int getNumber(String str) {
    Pattern pattern = Pattern.compile("\\[([0-9]+)\\]");
    Matcher matcher = pattern.matcher(str);
    int number = 0;
    while (matcher.find()) {
        number = Integer.parseInt(matcher.group());
    }
    return number;
}

但它不起作用,我得到以下例外:

Exception in thread "main" java.lang.NumberFormatException: For input string: "[232]"

任何人都知道如何解决这个问题,如果有一种更有效的方法让我在java中进行这种模式匹配?

1 个答案:

答案 0 :(得分:6)

没有任何参数的

group()会返回整个匹配项(相当于group(0))。这包括您在正则表达式中指定的方括号。

要提取数字,请传递1以仅返回正则表达式中的第一个捕获组(([0-9]+)):

number = Integer.parseInt(matcher.group(1));