2011-05-08 78 views
1

我有格式的字符串來提取一些「[232] .......」我想提取232出字符串的,我這樣做的java:使用正則表達式中的字符串

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中?

+0

BoltClock已經回答了你的問題,更多信息的提取數字看一看HTTP: //sackoverflow.com/questions/5917082/regular-expression-to-match-numbers-with-or-without-commas-and-decimals-in-text – entonio 2011-05-08 23:51:59

回答

6

group()沒有任何參數返回整個匹配(相當於group(0))。這包括您在正則表達式中指定的方括號。

要提取的數量,通過1你的正則表達式中只返回第一個捕獲組(([0-9]+)):

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

它的工作原理,非常感謝 – user685275 2011-05-08 23:52:20