我正在开发一个在线检查是否有更新的程序。我用于更新检查的站点为我提供了一个纯文本响应,如下所示:
filename:foobar0.2.3-dev.zip
我想要实现的是从每次收到的字符串中获取版本号(0.2.3-dev
)而不必每次都使用此格式的文件名,因此它也适用于{{1等等。
我不知道我怎么能这样做,非常感谢任何帮助。
亲切的问候。
@EDIT
在Ben的帮助下(见下面的答案),我想办法完成这项工作。
baz0.2.3-dev.jar
答案 0 :(得分:1)
您可以尝试匹配" number.number.number-dev"例如以下
/(\d+\.\d+\.\d+-dev)/
在行动here
中查看对于Java,导入java.util.regex。*并尝试:
Pattern p = Pattern.compile(".*?(\\d+\\.\\d+\\.\\d+-dev).*");
Matcher m = p.matcher("filename:foobar0.2.3-dev.zip");
if (m.matches()) {
System.out.println(m.group(1));
}
else {
System.out.println("Pattern does not match");
}
行动here
答案 1 :(得分:0)
这是一种捕获1-4版本号的方法。
# "(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?-dev"
( \d+ ) # (1)
(?:
\.
( \d+ ) # (2)
(?:
\.
( \d+ ) # (3)
(?:
\.
( \d+ ) # (4)
)?
)?
)?
-dev
输出
** Grp 0 - ( pos 15 , len 9 )
0.2.3-dev
** Grp 1 - ( pos 15 , len 1 )
0
** Grp 2 - ( pos 17 , len 1 )
2
** Grp 3 - ( pos 19 , len 1 )
3
** Grp 4 - NULL