如何在java中使用正则表达式从字符串中提取数字

时间:2017-04-12 21:34:34

标签: java

我尝试过使用

title.substring(title.lastIndexOf("(") + 1, title.indexOf(")"));

我只想提取像1899年一样的年份。

适用于像“hadoop(1899)”这样的字符串,但是字符串“hadoop(yarn)(1980)”会出错...

2 个答案:

答案 0 :(得分:0)

只需用正则表达式替换除括号内的所有数字

String foo = "hadoop (1899)"; // or "hadoop(yarn)(1980)"
System.out.println(foo.replaceAll(".*\\((\\d+)\\).*", "$1"));

答案 1 :(得分:0)

嗨检查this示例。这是用于提取括号括起来的数字的正则表达式。

以下是可以使用的可用代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

final String regex = "(?<=\\()\\d+(?=\\))";
final String string = "\"hadoop (1899)\"  \"hadoop(yarn)(1980)\"";

final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println("Full match: " + matcher.group(0));
    for (int i = 1; i <= matcher.groupCount(); i++) {
        System.out.println("Group " + i + ": " + matcher.group(i));
    }
}