2

我正在尝试从不同的 RPM 列表中提取版本。下面是一个例子:

rpm = "abc-def-ghi-1.1.0-10.el6.x86_64"

这个变量可以有不同的字符串值,

rpm = "a-b-1.1.1-10.x86_64"

我的目标是使用“匹配”方法(如下所示)编写一个正则表达式 - 尽管这个不涵盖 .el6 方面。

rpm.match(/^#{rpmname_to_match}-(.*).x86_64$/).nil?
4

1 回答 1

1

我不确定你想用 .el6 部分做什么,但如果你想要一个只匹配数字部分的模式,那么试试这个:

([0-9]+(?:(?:\.|-)(?:[0-9]+))*)

这将只匹配以一位或多位数字开头的字符串,然后可以包含任意数量的序列,即句点或连字符后跟一位或多位数字。

因此,您的最终陈述可能如下:

rpm.match(/^#{rpmname_to_match}-([0-9]+(?:(?:\.|-)(?:[0-9]+))*)(.*)\.x86_64$/).nil?
于 2013-03-27T20:36:20.510 回答