我想从字符串中提取两个数字,如下所示:“views:120 upvotes:540”。预期的结果是120和540.我想用Java Matcher类来做这件事。我怎样才能实现这一目标,换句话说,实现这一目标所需的模式是什么?
答案 0 :(得分:2)
要使用Matcher
,首先要编译Pattern
,然后拨打matcher(String)
然后查看是否匹配。最后,您可以解析值。像,
String str = "views: 120 upvotes: 540";
Pattern p = Pattern.compile("views:\\s*(\\d+)\\s+upvotes:\\s*(\\d+)",
Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(str);
if (m.matches()) {
int views = Integer.parseInt(m.group(1));
int upvotes = Integer.parseInt(m.group(2));
System.out.printf("%d %d%n", views, upvotes);
}
输出
120 540
答案 1 :(得分:0)
如果您只想要数字,这将有效。
import java.util.regex.*;
String matchPattern = "views: (\\d+) upvotes: (\\d+)"
Pattern pattern = Pattern.compile(matchPattern);
Matcher match = pattern.matcher("views: 120 upvotes: 540");
if (match.find()){
System.out.println(match.group(1));
System.out.println(match.group(2));
}