作为大型服务器项目的一部分,我正在开发一个ANT模式解析器。
这篇文章的答案中有一些ANT模式的好例子:我如何使用Nant/ANT命名模式?然而,我仍然对一些可能的排列感到困惑。
ANT模式文档中的一个示例http://nant.sourceforge.net/release/0.85/help/types/fileset.html如下所示:
**/test/**
匹配路径中有测试元素的所有文件,包括作为文件名的测试。
我的理解是**
匹配一个或多个目录以及这些目录下的文件。因此,我希望**/test/**
与src/test/subfolder/file.txt
和test/file2.txt
匹配,但这句话似乎意味着它也将与名为src/test
的文件匹配。即使在模式中test
之后有/
,这是否正确?
此外,还不清楚以下模式是否有效:
folder**
folder1/folder**
**folder/file.txt
我想他们会像一样工作
folder*/**
folder1/folder*/**
**/*folder/file.txt
但是他们被允许吗?
我按照coolcfan的建议对NAnt进行了一些测试,并回答了我自己的问题。问题中的模式都是有效的。
基于我上面问题中链接的以下文件:
- bar.txt
- src/bar.c
- src/baz.c
- 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/**
;匹配4src/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和4src/ba?.c
匹配2和3 nbsp