繁体   English   中英

Java正则表达式提取版本

[英]Java regex to extract version

我正在尝试编写Java正则表达式来从从Java -version命令获得的字符串中剥离Java版本。

如果字符串是"java version 1.7.0_17" ,则需要分别提取1.7和17。 假设该字符串是"java version 1.06_18" ,则需要提取1.06和18。其中第一个字符串应仅到第一个小数点为止。 我尝试了以下正则表达式,

Pattern p = Pattern.compile(".*\"(.+)_(.+)\"");

但是它仅提取1.7.0和17,但是我不确定如何停止仍然小数点后一位。 任何帮助都是非常可观的。

对于您给出的测试用例,可以使用以下命令: (\\d+\\.\\d+).*_(\\d+)

重新阅读您的问题,我的旧答案没有涵盖在第一个小数点处停止。 这应该可以解决您的问题:

Pattern p = Pattern.compile(".*?(\\d+[.]\\d+).*?_(\\d+)");

经过测试:

 String input = "java version 1.7.0_17";
 Pattern pattern = Pattern.compile(".*?(\\d+[.]\\d+).*?_(\\d+)");
 Matcher matcher = pattern.matcher(input);
 if (matcher.find()) {
     String version = matcher.group(1); // 1.7
     String update  = matcher.group(2); // 17
}

旧版本:

除了找到数字,我将摆脱其余的东西:

String string  = "java version 1.7.0_17";
String[] parts = string.split("[\\p{Alpha}\\s_]+", -1);
String version = parts[1]; // 1.7.0
String update  = parts[2]; // 17

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM