实现独立于平台的Glob

时间:2011-03-06 16:28:27

标签: c++ cross-platform

我正在尝试在C ++中实现glob(3)glob - 相似的功能。

我已经有一个函数将目录内容读入std::vector<std::string>容器(让我们调用这个函数ListDirectory()),所以我显然只需要字符串匹配部分 - 我的问题:

  • 实施时应该遵循什么样的概念?
  • 是否应该记住常见问题?
  • 使用完整的正则表达式库(如PCRE),或者简单的模式匹配la Lua是明智的吗?
  • 如果使用简单的模式匹配更好,是否已经有可用的函数/库/类(scanf和朋友怎么样?)

2 个答案:

答案 0 :(得分:3)

如果您正在搜索平台无关的通配符库, 例如,有shwild库。

如果您正在检查模式匹配以实现自学目的, 至于回溯的基本正则表达式, 我认为第一章 Beautiful Code 很好地说明了。

当你在家中正常表达时,可能会转换 通配符到正则表达式,或将正则表达式代码转换为 通配符匹配器,不会是一项艰苦的工作。

关于NFA的现实正则表达, 详细解释将在 Russ Cox的web site

希望这有帮助

答案 1 :(得分:0)

我使用这个:wildcmp,以适度的形式拒绝/中的目录分隔符*。如果你想要稍微改编的代码(我还将指针转换为字符串/迭代器,为了它的乐趣:))。它干净简单,不需要任何更多的花哨。

相关问题