与ANT模式语法的混淆和可能的变化
作为大型服务器项目的一部分,我正在开发一个ANT模式解析器 在这篇文章的答案中有一些蚂蚁模式的好例子:然而,我仍然对一些可能的排列感到困惑 ANT模式文档中的一个示例如下:与ANT模式语法的混淆和可能的变化,ant,design-patterns,Ant,Design Patterns,作为大型服务器项目的一部分,我正在开发一个ANT模式解析器 在这篇文章的答案中有一些蚂蚁模式的好例子:然而,我仍然对一些可能的排列感到困惑 ANT模式文档中的一个示例如下: **/test/**匹配路径中包含测试元素的所有文件,包括作为文件名的测试 我的理解是,**匹配一个或多个目录以及这些目录下的文件。因此,我希望**/test/**匹配src/test/subfolder/file.txt和test/file2.txt,但这句话似乎暗示它还将匹配名为src/test的文件。即使在模式中的测试
**/test/**
匹配路径中包含测试元素的所有文件,包括作为文件名的测试
我的理解是,**
匹配一个或多个目录以及这些目录下的文件。因此,我希望**/test/**
匹配src/test/subfolder/file.txt
和test/file2.txt
,但这句话似乎暗示它还将匹配名为src/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**
匹配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
创建一些文件夹和空文件,用
和
编写一个测试构建文件,您将看到模式的实际工作方式。很好的一点,但我想我希望在不实际学习使用NAnt的情况下学习模式语法。。。