【发布时间】:2015-09-11 17:04:31
【问题描述】:
阅读https://ant.apache.org/manual/dirtasks.html,上面写着
"*这些模式看起来很像 DOS 和 UNIX 中使用的模式: '*' 匹配零个或多个字符,'?'匹配一个字符。”
我想清理以下内容(简单例如:),因为我认为第二种形式更简洁易读(当然,如果您知道正则表达式模式):
<copy todir="${target.dir}" flatten="true" >
<fileset dir="${source.dir}" >
<include name="**/*.war" />
<include name="**/*.ear" />
<include name="**/*.gar" />
<exclude name="some-dir/**" />
</fileset>
</copy>
变成这样:
<include name="**/*.[weg]ar" />
但这不受支持,即使它类似于 UNIX。
<include name="**/*.?ar" />
不够,因为我不想包含“*.jar”
实现此目的最有效的方法是什么?
ps:还在 ant-1.7.1 上
【问题讨论】:
-
我不认为你能做到这一点。这不是正则表达式语法,而是 globbing。您只有
*和?功能,但这些是全局字符而不是正则表达式。 -
是的,我承认这是 copy / include 构造中唯一可用的选项,但是是否存在具有资源集合或其他东西的替代解决方案......相当于
"find * -name "*.[weg]ar",这将解决,然后可以在副本中使用?