我正在比较作为字符串传递的版本号。
我需要检测版本是否是 beta 版本,我想检查 beta ,构建或 b 包含在版本的最后部分中,我正在尝试使用正则表达式。
到目前为止它可以工作,但只要版本部分中有空格就不会。
也许某人有更好的主意?
到目前为止我的正则表达式:
(\d+)(beta|build|b(\d*))?
字符串示例:
v1.23beta125 - >确定
v1.25.458 beta 129 - >不承认
示例代码:
private Boolean getBeta(String str) {
boolean version = false;
Pattern p = Pattern.compile("(\\d+)(beta|build|b(\\d*))?");
Matcher m = p.matcher(str);
if (!m.find()) {
return version;
} else
version = true;
return version;
}
答案 0 :(得分:0)
您可以将空格用作可选(0或更多)
试试这个正则表达式:
(beta|build|b)\s*(\d+)
答案 1 :(得分:0)
我的意思是,您只需查找版本字符串中是否有b
,beta
或build
,对吗? contains
可以做到这一点。你不需要正则表达式:))
好吧,你也可以使用这个正则表达式
build|beta|b
检查find
是否返回true。
您可能还想打开不区分大小写的选项。
答案 2 :(得分:0)
您还可以使用限制性更强的以下正则表达式:
v?\s*(\d+(\.\d*)*)+\s*(beta|build|b)\s*(\d+)
在 regex101 :https://regex101.com/r/oLoVN3/2
上进行测试您需要在每个反斜杠\
之前添加反斜杠\
,以便在代码中使用它。