我有類似以下的字符串:從字符串中提取兩個數字
「一些值是25,但不能更大然後12」
我想提取的兩個數字來自字符串。
這些數字是整數。
第一個數字前面可能沒有文字,第二個數字後面可能沒有文字。
我試圖用一個正則表達式和團體去做,但悲慘地失敗了:
public MessageParser(String message) {
Pattern stringWith2Numbers = Pattern.compile(".*(\\d?).*(\\d?).*");
Matcher matcher = stringWith2Numbers.matcher(message);
if (!matcher.matches()) {
couldParse = false;
firstNumber = 0;
secondNumber = 0;
} else {
final String firstNumberString = matcher.group(1);
firstNumber = Integer.valueOf(firstNumberString);
final String secondNumberString = matcher.group(2);
secondNumber = Integer.valueOf(secondNumberString);
couldParse = true;
}
}
任何幫助apreciated。
數字模式之間的「。*」會不會「吃掉」第二個數字? – MartinStettner
不是。星號後面的問號表示它應該匹配儘可能最短的字符串 - 因此,它會匹配第二個數字之前的所有內容。 – BlairHippo
......雖然,因爲兩位數的條款是不可選了,問號是那麼重要 - 如果你是絕對肯定會有兩個字符串中只有兩個數字,你不需要它。但是,如果有更多的數字,這很重要。使用「1和2和3」作爲示例字符串:使用問號,可以獲得1和2。沒有,1和3將是兩個提取的值。 – BlairHippo