Java Regex查找特定文件

时间:2016-07-29 08:01:23

标签: java regex

在我的一个测试用例中,我想将一个组件的特定jar从一个位置复制到另一个位置。 例如,当目标目录只有以下jars

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。这个jar的版本可以随时更改。所以我可以将正则表达式用于此目的[1]。但我想知道如何省略正则表达式中的另一个jar。即想要省略名称中包含字符串“ tests ”的jar。

1。Regex for files in a directory

4 个答案:

答案 0 :(得分:1)

您可以使用indexOf代替regex来检查包含单词“tests”的文件名是否如下所示:

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

更新: indexOf()将比regex快得多,而且可能也更容易理解。

答案 1 :(得分:1)

基于regex的解决方案将是:

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

答案 2 :(得分:0)

将SNAPSHOT与任何给定版本号完全匹配,忽略所有其他版本(包括tests-SNAPSHOT):

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

答案 3 :(得分:-1)

匹配主jar而不是测试jar的正则表达式可能是:

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

字符串"测试 - "有一个否定匹配器。请注意,将此正则表达式放入字符串时,您必须转义反斜杠。