2012-10-03 27 views
3

我正在爲我的項目創建一個bom(http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html)。我的項目有很多依賴關係...所以我創建了一個可以爲我生成xml的小ruby腳本。但是,當涉及到正則表達式時,我就不能確定artifactId。假設我有以下3條路徑:maven artifact正則表達式

  • /Users/buddy/Downloads/jboss-esb/client/hibernate-commons-annotations.jar
  • /用戶/好友/下載/的jboss-ESB /客戶機/ EJB3-persistence.jar
  • /Users/buddy/Downloads/jboss-esb/server/default/deploy/spring.esb/spring-core-3.0.6.RELEASE.jar

,我試圖找到一個正則表達式,只返回我

  • 休眠-公地註解
  • EJB3餘輝
  • 彈簧核

之前提到的路徑是在變量名和我有這樣的正則表達式來確定版本和artifactId的(顯然我有一些默認版本,以防文件名中沒有版本)

@version = version 
if temp_version = filename[/-([\d+{1,3}\.A-Z]+).jar/,1] 
    @version = temp_version 
end 
@artifactId = filename[/.*\/([\w\d]+\-?[^\d^\-]*)\-?[\d+\.A-Z]*.jar/,1] 

但它不會在所有情況下都起作用。

任何幫助使正則表達式在所有情況下都能正常工作,並且正則表達式的簡化版本非常感謝。

+0

順便說一句你的版本正則表達式有什麼問題? – Gabber

+0

版本正則表達式很好。我只是爲了完整而添加它,所以沒有maven上帝試圖讓artifactId和版本具有相同的正則表達式 – Buddy

+0

Ahah,好點:D – Gabber

回答

0

此正則表達式的工作

.+\/(.+?)(-\d|.jar) 

測試here,看在組(第一,與$1訪問)你正在尋找的字符串。

編輯:

我認爲任何版本是文件名的一部分,並與一個負和數字開頭,因此如果正則表達式發現-3-0等文件字符串將終止。

+0

就像一個魅力,正則表達式很簡單;)有時一個只是認爲嚴格:-) – Buddy