我想使用Regex解析器来帮助C应用程序中的一些字符串处理。我理想地寻找轻量级和开源的东西。目标平台是一个嵌入式系统,因此我们希望尽可能节省内存消耗。我在网上找到了很多选项,但是想知道是否有人可以在这个特定背景下提出其他建议。
非常感谢,
答案 0 :(得分:7)
Scintilla是一个开源文本编辑器组件,使用Ozan S. Yigit's RE engine
之所以选择它是因为它属于公共领域(所以没有任何抵押许可证)并且非常轻量级。但它有点受限......对于它的价值,RESearch.cxx使用稍微更现代的代码(转换为C ++,但将它转换回C应该不复杂),并使用一些小的扩展我自己(支持\ d \ s \ w等)。
有一些替代方案,例如Henry Spencer's regular expression libraries。
考虑到这一点,Lua正则表达式引擎(在字符串库中,gsub实现等)可能很快也很小,就像语言本身一样。它有它的怪癖和局限,但它非常实用。
副项目LPeg可以是RE的一个有趣替代方案,仍然轻巧但功能强大。
答案 1 :(得分:5)
如果你不需要一个功能齐全的正则表达式实现(听起来你没有这样做),那么由Brian Beautiful Code中突出显示的Brian Kernighan和Rob Pike编写的代码可能会满足您的需求。我found a Dr. Dobb's article我认为这是本书中出现的代码的起源。
答案 2 :(得分:0)
鉴于您的轻量级要求,我建议使用Henry Spencer's regex library来实现POSIX BRE and ERE regex flavors。这些是您的用户可能已经熟悉的标准正则表达式。