与ANT模式语法和可能的变化混淆

时间:2013-08-13 14:00:36

标签: ant design-patterns

我正在开发一个ANT模式解析器,作为大型服务器项目的一部分。

在这篇文章的答案中有一些很好的ANT模式示例:How do I use Nant/Ant naming patterns?但是,我仍然对一些可能的排列感到困惑。

此处http://nant.sourceforge.net/release/0.85/help/types/fileset.html的ANT模式文档中的一个示例如下:

  

**/test/**匹配路径中包含test元素的所有文件,包括test作为文件名。

我的理解是**匹配一个或多个目录以及这些目录下的文件。所以我希望**/test/**匹配src/test/subfolder/file.txttest/file2.txt,但这句话似乎暗示它也会匹配名为src/test的文件。即使模式中的/之后有test,这是否正确?

此外,尚不清楚以下模式是否有效:

folder**
folder1/folder**
**folder/file.txt

我想他们的工作方式与

相同
folder*/**
folder1/folder*/**
**/*folder/file.txt

但是他们被允许了吗?

1 个答案:

答案 0 :(得分:5)

我根据 coolcfan 的建议对NAnt进行了一些测试并回答了我自己的问题。问题中的模式都是有效的。

基于上述问题链接中的以下文件:

  1. 跳回到bar.txt
  2. 的src / bar.c
  3. 的src / baz.c
  4. 的src /测试/ bartest.c
  5. 以下意外模式也有效:

    • src**匹配2,3和4
    • **.c匹配2,3和4
    • **ar.*匹配1和2
    • **/bartest.c/**匹配4
    • src/ba?.c/**匹配2和3

    为了完整起见,这些是对上述问题中链接的以下模式的补充:

    • *.c没有匹配(当前目录中没有.c文件)
    • src/*.c匹配2和3
    • */*.c匹配2和3(因为*只匹配一个级别)
    • **/*.c匹配2,3和4(因为**匹配任意数量的级别)
    • bar.*匹配1
    • **/bar.*匹配1和2
    • **/bar*.*匹配1,2和4
    • src/ba?.c匹配2和3