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

标签 php regex extract digits

我正在使用以下代码从字符串中提取版本号。版本号是第一个仅由数字和点组成的匹配项。例如,在字符串中:“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”。

我是 RegEx 的新手,所以我很难理解它。

感谢您的帮助。

最佳答案

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

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

关于php - 正则表达式从字符串中提取数字和点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7234572/

相关文章:

regex - 在 vim 中查找并替换整个单词

web-scraping - 网上抓取:从“统计信息”标签中获取Youtube视频的份额

php - 有没有办法像在 javascript 中一样向 php 类添加方法?

php - 奇怪的主机问题

php - 多次提交

C# 正则表达式,通过引用字符串提取字符串

r - 基于现有模式 R 创建新列

javascript - WordPress:如何通过附件 ID 排除缩略图

javascript 正则表达式或字符串方法仅匹配子域和域(减去顶级)

c++ - 如何将多个替代模式之一与 C++11 正则表达式匹配