使用Java Matcher类从String中提取两个数字

时间:2014-11-11 20:58:17

标签: java regex

我想从字符串中提取两个数字,如下所示:“views:120 upvotes:540”。预期的结果是120和540.我想用Java Matcher类来做这件事。我怎样才能实现这一目标,换句话说,实现这一目标所需的模式是什么?

2 个答案:

答案 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));
}