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

java:使用正则表达式提取字符串中的数字,java,regex,matching,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 = Int

我有一个格式为“[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中进行这种模式匹配?

group()
不带任何参数返回整个匹配(相当于
group(0)
)。这包括您在正则表达式中指定的方括号

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

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

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


BoltClock回答了您的问题,有关提取数字的更多信息,请参阅BoltClock回答了您的问题,有关提取数字的更多信息,请参阅
number = Integer.parseInt(matcher.group(1));