2013-03-27 98 views
2

我想從不同的RPM列表中提取版本。下面是一個例子:需要紅寶石經常exp匹配

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? 
+0

什麼是你想匹配? RPM的版本? – squiguy 2013-03-27 20:22:19

+0

順便說一句 - 我也想提取的版本放在一個臨時註冊的例子: – newruby 2013-03-27 20:23:12

+0

是的 - 版本(如我的例子)1.1.0-10和1.1.1-10 – newruby 2013-03-27 20:24:06

回答

1

我不能確定你想與.el6部分做什麼,但如果你想有一個模式,這將只匹配的數字部分,那就試試這個:

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

這隻會匹配以一個或多個數字開頭的字符串,然後可以有任意數量的序列,這些序列是一個句點或連字符後跟一個或多個數字。

所以你的最終聲明可能如下:

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

很好的幫助!神奇 - 完美的作品。 – newruby 2013-03-27 20:45:32