正则表达式从字符串中提取数字和点

发布于 2024-12-02 00:02:09 字数 491 浏览 0 评论 0原文

我使用以下代码从字符串中提取版本号。版本号是仅由数字和点组成的第一个匹配。例如,在字符串“GT-I9000M-user 2.25.31 FROYO UGKC1 release-keys”中,匹配项将为:“2.25.31” 字符串中的另一个示例:“1.24.661.1hbootpreupdate:13DelCache: 1”,匹配结果为:“1.24.661.1”。

我当前的代码是:

if (preg_match('/[\d]+[\.][\d]+/', $version, $matches)) { 
    return $matches[0]; //returning the first match 
}

该代码仅适合某些情况,但不适合所有情况。例如,在第一个示例中,它将仅返回:“2.25”而不是“2.25.31”。在第二个示例中,它将返回“1.24”而不是“1.24.661.1”。

我是正则表达式的新手,所以我很难弄清楚它。

感谢您的帮助。

I'm using the following code to extract the version number from a string. The version number is the first match made only by digits and dots. For example in the string: "GT-I9000M-user 2.25.31 FROYO UGKC1 release-keys" the match would be: "2.25.31"
Another example in string: "1.24.661.1hbootpreupdate:13DelCache: 1" the match would be: "1.24.661.1".

My current code is:

if (preg_match('/[\d]+[\.][\d]+/', $version, $matches)) { 
    return $matches[0]; //returning the first match 
}

This code fits only some of the cases but not all of them. For example in the first example it will only return: "2.25" instead of "2.25.31". In the second example it will return "1.24" instead of "1.24.661.1".

I'm new to RegEx so I'm having a hard time figuring it out.

Thanks for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

时常饿 2024-12-09 00:02:09
if (preg_match('/\d+(?:\.\d+)+/', $version, $matches)) { 
    return $matches[0]; //returning the first match 
}

允许 .x 重复,它应该可以工作。

if (preg_match('/\d+(?:\.\d+)+/', $version, $matches)) { 
    return $matches[0]; //returning the first match 
}

Allow the .x to repeat and it should work.

只为一人 2024-12-09 00:02:09

试试这个:

'/\d+(\.\d+)+/'

与您的不同之处在于它允许 .\d+ 部分重复,从而允许多个点。

Try this one:

'/\d+(\.\d+)+/'

The difference with yours is that it allows the .\d+ part to repeat, thus allowing multiple dots.

软糯酥胸 2024-12-09 00:02:09

要将软件版本号与一个/不带/多个点相匹配,可以使用:(

\d+(?:\.*\d*)*

在发表这篇文章之前向作者致敬)

To match software version numbers with one/without/multiple dots one could use:

\d+(?:\.*\d*)*

(kudos to authors before this post)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文