正则表达式字符串中的特定措辞[重复]

问题描述 投票:0回答:3

这个问题在这里已有答案:

我正在比较作为字符串提供的版本号。

我需要检测版本是否是测试版本,我想检查版本的最后部分是否包含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;
    }
android regex string
3个回答
0
投票

您还可以使用限制性更强的以下正则表达式:

v?\s*(\d+(\.\d*)*)+\s*(beta|build|b)\s*(\d+)

在regex101上测试:https://regex101.com/r/oLoVN3/2

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


0
投票

您可以使用空格作为可选项(0或更多)

试试这个正则表达式:

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

0
投票

我的意思是,你想要的只是找到版本字符串中是否有bbetabuild,对吧? contains可以做到这一点。你不需要正则表达式:)

好吧,你也可以使用这个正则表达式

build|beta|b

检查find是否返回true。

您可能还想打开不区分大小写的选项。

© www.soinside.com 2019 - 2024. All rights reserved.