我有一个类似以下的字符串:
"some value is 25 but must not be bigger then 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;
}
}
任何帮助都是值得赞赏的。
\\D*
应该改为\\D+
。现在的正则表达式可以匹配字符串"42"
,将"4"
匹配到第一组,将"2"
匹配到第二组。 - Alan Moore