RegEx模式用于排除具有特定字符串的文件名

时间:2012-03-29 09:32:56

标签: regex ant

我正在尝试为Ant任务编写正则表达式,该任务排除以某个字符序列结尾的目录中的文件。例如,我有以下三个文件:

file01.js
file02.js
file02-copy.js

我想要一个找到前两个文件的表达式,并忽略末尾带有“-copy”的文件。我尝试使用<include><excludes>这样:

<fileset dir="." includes="js/">
    <include name="*.js"/>
    <exclude name="*copy*"/>
</fileset>

但显然因为它是一个JS文件,它仍然包括在内。所以我正在尝试使用正则表达式来匹配文件(如果有人有其他建议,请建议):

<fileset dir="." includes="js/">
    <containsregexp expression="...">
</fileset>

这就是我的问题所在。我无法找到符合此要求的regEx。我尝试了一些像(\w*)(!-copy).js这样的东西,但这没有做任何事情。如果有人能帮助我,我会非常感激。

我是否提到我讨厌尝试编写regEx?

2 个答案:

答案 0 :(得分:2)

我会跳过include指令,只为明确排除的所有内容添加exclude指令。然后将隐式包含其他文件。

我不知道你的文件结构是什么样的,所以我对这个可能是错的,但也许这样就可以了:

<fileset dir="js" excludes="*copy*" />

答案 1 :(得分:0)

尝试匹配(?m)^(?=。 js)((?!copy.js)。) $

更多信息可在以下链接中找到。优秀的帖子。

Regular expression to match a line that doesn't contain a word?