檔案 Glob

lua-users home
wiki

Lua 標準函式庫,與 ANSI C 一樣,缺少用於檔案 glob 的內建函式(請參閱 [維基百科:Glob]),這是在檔名中比對例如 hello[a-z]??.* 的表示式。此頁面說明能在 Lua 中支援這項功能的部分方法。

Glob 有許多的語法。請參閱

Windows FindFileFirst/FindFileNext API 呼叫實現的 glob 函式,可能會特別違反直覺,有時應避免使用(例如 *.txt 可能比對出 1.txt1.txt~)。因此,將這些 API 呼叫包裝在 Lua 延伸 DLL 中,可能不是最理想的方法。

解決方案:純粹 Lua

下列方法會將 glob 表示式轉換為 Lua 樣式,然後可以用在 Lua 的樣式比對函式中。在概念上,忽略語法的差異,glob 是 Lua 樣式的子集,而 Lua 樣式是正規表示式的子集。不過,glob 有時會有一些晦澀的規則和特殊情況(如上所述),視所選的語法而定。

原始碼:https://gist.github.com/1408288

--DavidManura

解決方案:POSIX

POSIX 規定相容系統提供 glob 系統呼叫:請參閱任何此類手冊頁,例如 http://linux.die.net/man/3/glob,以取得詳細資訊。

[luaposix] 模組會介面到此函式庫。--CharlesStewart?

解決方案:包裝 APR fnmatch

請參閱 LuaApr 中的 [apr.fnmatch()] 函式,它會包裝 APR 的 fnmatch 函式。

其他範例

請也參閱 SciteExtMan 中的 scite_Files。也請注意 [Perl glob]


最近變更 · 偏好設定
編輯 · 歷程
最後編輯時間為 2013 年 4 月 10 日上午 7:41 GMT (比較)