字符串中的特定措辞的正则表达式

时间:2017-12-21 06:11:31

标签: android regex string

我正在比较作为字符串传递的版本号。

我需要检测版本是否是 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;
    }

3 个答案:

答案 0 :(得分:0)

您可以将空格用作可选(0或更多)

试试这个正则表达式:

(beta|build|b)\s*(\d+)

答案 1 :(得分:0)

我的意思是,您只需查找版本字符串中是否有bbetabuild,对吗? 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

上进行测试

您需要在每个反斜杠\之前添加反斜杠\,以便在代码中使用它。