3

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

这篇文章的答案中有一些很好的 ANT 模式示例:如何使用 Nant/Ant 命名模式?但是,我仍然对一些可能的排列感到困惑。

此处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

但他们被允许吗?

4

1 回答 1

6

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

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

  1. 吧.txt
  2. src/bar.c
  3. src/baz.c
  4. src/test/bartest.c

以下意外模式也有效:

  • 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    
于 2013-08-14T13:36:34.950 回答