我正在开发一个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.txt
和test/file2.txt
,但这句话似乎暗示它也会匹配名为src/test
的文件。即使模式中的/
之后有test
,这是否正确?
此外,尚不清楚以下模式是否有效:
folder**
folder1/folder**
**folder/file.txt
我想他们的工作方式与
相同folder*/**
folder1/folder*/**
**/*folder/file.txt
但是他们被允许了吗?
答案 0 :(得分:5)
我根据 coolcfan 的建议对NAnt进行了一些测试并回答了我自己的问题。问题中的模式都是有效的。
基于上述问题链接中的以下文件:
以下意外模式也有效:
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