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



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

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

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

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

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

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

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

我想他们会像一样工作

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

但是他们被允许吗?

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

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

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

以下意外模式也是有效的:

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

为了完整起见,这些是从我上面的问题中的链接中提取的以下模式之外的:

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

相关内容

  • 没有找到相关文章

最新更新