需要一个ruby常规exp进行匹配

时间:2013-03-27 20:20:30

标签: ruby regex cucumber

我正在尝试从不同的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?

1 个答案:

答案 0 :(得分:1)

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

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

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

所以你的最终陈述可能如下:

rpm.match(/^#{rpmname_to_match}-([0-9]+(?:(?:\.|-)(?:[0-9]+))*)(.*)\.x86_64$/).nil?