【发布时间】:2010-09-23 08:15:36
【问题描述】:
我想使用正则表达式解析器来帮助 C 应用程序中的某些字符串处理。理想情况下,我正在寻找轻量级和开源的东西。目标平台是嵌入式系统,因此我们希望尽可能多地节省内存消耗。我在网上找到了许多选项,但想知道是否有人可以提出其他可能对这种特定情况有所帮助的建议。
非常感谢,
【问题讨论】:
我想使用正则表达式解析器来帮助 C 应用程序中的某些字符串处理。理想情况下,我正在寻找轻量级和开源的东西。目标平台是嵌入式系统,因此我们希望尽可能多地节省内存消耗。我在网上找到了许多选项,但想知道是否有人可以提出其他可能对这种特定情况有所帮助的建议。
非常感谢,
【问题讨论】:
如果您不需要功能齐全的正则表达式实现(听起来您不需要),那么 Beautiful Code 中突出显示的 Brian Kernighan 和 Rob Pike 编写的代码可能会满足您的需求。我found a Dr. Dobb's article 我认为这是书中出现的代码的起源。
【讨论】:
Scintilla,一个开源的文本编辑器组件,使用Ozan S. Yigit's RE engine
之所以选择它,是因为它属于公共领域(因此没有妨碍许可)并且非常轻量级。但它有点有限......对于它的价值,RESearch.cxx 使用了稍微更现代的代码(转换为 C++,但将其转换回 C 应该并不复杂),并带有一些我自己制作的小扩展(支持 \d \s \w 等)。
还有一些替代品,例如Henry Spencer's regular expression libraries。
想一想,Lua 正则表达式引擎(在字符串库、gsub 实现等中)可能又快又小,就像语言本身一样。它有其怪癖和局限性,但它非常有用。
附带项目LPeg 可以成为 RE 的有趣替代品,仍然轻巧但功能强大。
【讨论】:
考虑到您的轻量级要求,我推荐Henry Spencer's regex library,它实现了POSIX BRE and ERE regex flavors。这些是您的用户可能已经熟悉的标准正则表达式风格。
【讨论】: