2016-07-29 50 views
8

在我的測試用例之一中,我想將某個組件的特定jar從一個位置複製到另一個位置。 例如,當目標目錄中只有以下罐子Java正則表達式來查找特定文件

org.test.custom.search-4.2.2-快照的.jar
org.test.custom.search-4.2.2- 測試 -SNAPSHOT.jar

我想複製org.test.custom.search-4.2.2-SNAPSHOT-jar。這個罐子的版本可以隨時更改。所以我可以使用正則表達式來達到這個目的[1]。但我想知道如何在正則表達式中省略另一個jar。即想省略其名稱中帶有字符串「測試」的罐子。

1. Regex for files in a directory

+0

你可以使用一些與流過濾的文件? – ifly6

回答

1

您可以使用indexOf代替regex,以檢查是否含有單詞 「測試」 像這樣的文件名:

if(fileName.indexOf("tests") >= 0) { 
    // do what you want 
} 

更新:indexOf()會比快得多一個regex,可能也更容易理解。

+0

這將過濾這兩個文件。修改爲「 - 測試 - 」將解決問題 – izi

+0

先生,如果你看到它是'測試'而不是'測試'。無論如何,我展示的方式是OK的。 –

+0

你的答案在哪裏是問題所在的「正則表達式」? – xenteros

1

regex基礎的解決辦法是:

if (fileName.matches(".*tests.*")) { 
    //do something 
} else { 
    //do something else 
} 
-1

一個正則表達式匹配主罐子,但不是測試罐子可能是:

\w+-[\d.]+-(?!tests-).*\.jar 

它有一個字符串「測試負匹配 - 」。請注意,將此正則表達式放入字符串時,您必須避開反斜槓。

0

完全匹配快照與任何給定的版本號,忽略所有其他人(包括測試-快照):

org\.test\.custom\.search-\d+\.\d+\.\d+-SNAPSHOT-\.jar