Java Regex:提取版本号

时间:2013-06-11 19:18:34

标签: java regex numbers version extract

我有一个程序将版本号存储在文件系统的文本文件中。我在java中导入文件,我想提取版本号。我对正则表达式不是很了解所以我希望有人可以提供帮助。

文本文件如下:

0=2.2.5 BUILD (tons of other junk here)

我想要提取2.2.5。没有其他的。有人可以用这个正则表达式帮我吗?

4 个答案:

答案 0 :(得分:3)

如果您了解结构,则不需要正则表达式:

    String line = "0=2.2.5 BUILD (tons of other junk here)";
    String versionNumber = line.split(" ", 2)[0].substring(2);

答案 1 :(得分:1)

这个正则表达式可以解决这个问题:

(?<==)\d+\.\d+\.\d+(?=\s*BUILD)

尝试一下:

String s = "0=2.2.5 BUILD (tons of other junk here)";

Pattern p = Pattern.compile("(?<==)\\d+\\.\\d+\\.\\d+(?=\\s*BUILD)");
Matcher m = p.matcher(s);
while (m.find())
    System.out.println(m.group());
2.2.5

答案 2 :(得分:1)

此外,如果你真的在寻找一个正则表达式,尽管有很多方法可以做到这一点。

String line = "0=2.2.5 BUILD (tons of other junk here)";
Matcher matcher = Pattern.compile("^\\d+=((\\d|\\.)+)").matcher(line);
if (matcher.find())
    System.out.println(matcher.group(1));

输出:

2.2.5

答案 3 :(得分:1)

有很多方法可以做到这一点。这是其中之一

String data = "0=2.2.5 BUILD (tons of other junk here)";
Matcher m = Pattern.compile("\\d+=(\\d+([.]\\d+)+) BUILD").matcher(data);
if (m.find())
    System.out.println(m.group(1));

如果您确定data包含版本号,那么您也可以

System.out.println(data.substring(data.indexOf('=')+1,data.indexOf(' ')));