文件通配符 |
|
hello[a-z]??.* 这样的表达式与文件名进行匹配。本页面介绍了一些在 Lua 中支持此功能的方法。通配符有多种语法。参见
FindFileFirst/FindFileNext Win32 API 调用来实现。)Windows FindFileFirst/FindFileNext API 调用实现的文件通配符函数有时会非常反直觉,有时应避免使用(例如,*.txt 可能会同时匹配 1.txt 和 1.txt~)。因此,将这些 API 调用封装在 Lua 扩展 DLL 中可能不是最理想的方法。
以下方法将通配符表达式转换为 Lua 模式,然后可以用于 Lua 的模式匹配函数。大致概念上,忽略语法差异,通配符是 Lua 模式的一个子集,而 Lua 模式又是正则表达式的一个子集。然而,通配符有时有一些晦涩的规则和边界情况(参见上文),具体取决于所选择的语法。
源代码:https://gist.github.com/1408288
Posix 规定,兼容的系统提供一个 glob 系统调用:参见任何此类 man 页,例如 http://linux.die.net/man/3/glob,了解详情。
[luaposix] 模块接口到这个库。--CharlesStewart?
参见 LuaApr 中的 [apr.fnmatch()] 函数,它封装了 APR 的 fnmatch 函数。
另请参见 SciteExtMan 中的 scite_Files。另请注意 [Perl glob]。