我有一行输出类似于" Spec-Version:11.3.0"。我正在努力使用replaceAll()来使用句点来拉出版本。现在我有这样的事情:
version = line.replaceAll("[\\D+\\.]" , "");
有了这个我得到的版本:
1130
无论我使用什么语法组合,我都会丢失句号或拉动整行。
感谢任何帮助。
答案 0 :(得分:1)
答案 1 :(得分:1)
你正在做的是删除一段时间,或者不是数字(包括句号)。
尝试"[^\\d\\.]"
答案 2 :(得分:0)
你的替换是摆脱任何数字或句号。
version = line.replaceAll("[^\\.\\d]" , "");
应该替换任何不是数字而不是句号的内容
答案 3 :(得分:0)
答案 4 :(得分:0)
答案 5 :(得分:0)
正如其他人提到的,这是捕获组的完美用例。在java中,您可以编写以下内容:
String regex = ".*Spec-Version: ([\\d\\.]+).*";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("as asdgf sdf as Spec-Version: 12.3.1 asda sd]");
if (matcher.matches()) {
System.out.println("Match found");
System.out.println(matcher.group(1));
}
您需要在每行文字上尝试匹配。我推荐这个而不是replaceAll
,因为它在将来肯定会更灵活。实际上,您将能够匹配以下字符串:
pattern
.matcher("124442 1 2.23.4.12 as asdgf sdf as Spec-Version: 12.3.1 asda sd] 12.12314.15421");
虽然在上面的情况中,replaceAll
会给出' 12444212.23.4.1212.3.112.12314.15421',这不是你想要的。