[英]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.