java:使用正则表达式提取字符串中的数字
我有一个格式为“[232]”的字符串。我想从字符串中提取232,我这样做了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
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));