【发布时间】:2011-10-31 23:57:43
【问题描述】:
给定一个类 Unix 路径的资源结构:
例如
/foo/bar/baz/phleem/abc.txt
还有一组蚂蚁风格的通配符模式:
* matches zero or more characters excluding /
** matches zero or more full sub-paths (may not be preceded or followed
by anything other than /)
模式中的所有其他字符都是文字,为了简单起见,只有字符
A-Z、a-z、0-9、/ 和 .
在路径中允许。
鉴于上述结构:
我是否正确假设在所有匹配模式中,最具体的匹配总是按字母顺序排列的最后一个?
例子:
路径:
/foo/bar/baz/phleem/abc.txt
匹配模式(按字母顺序):
** < least specific
**/*.txt
**/phleem/*.txt
/foo/**/abc.txt < most specific
更新:好的,这是我对“最具体”的定义
如果 a 比 b 更具体
- a 的非通配符前缀比 b 的长
- 给定两个通配符在相同的各自偏移量,* 比 ** 更具体
【问题讨论】:
-
不清楚为什么你认为
**/phleem/*.txt比/foo/**/abc.txt更“不具体”。在它们分别匹配的两组路径中,没有一个包含在另一个中。 -
@n.m.你说得对,我很快就会详细说明这一点。谢谢
-
特异性不应该是通配符数量的函数吗?我可以同意 ** > * 但我认为您还应该包括 ** > 。非通配符前缀长度的条件似乎相当人为。为什么 /foo/bar/anything 比 foo/*/anything 更具体?
-
@tripleee 因为否则这个问题是无法解决的,我猜 :-) 不,这在我正在开发的应用程序中更有意义
标签: string language-agnostic path pattern-matching