我正在考虑在我正在开发的C库中实现正则表达式解析器。现在,问题是:是否有任何开源代码可以逐字使用或尽可能少的更改?我对代码的期望是:
您可以推荐哪些现成的解决方案?我正在看PCRE for C,看起来它拥有PHP中可用的所有内容(规则),但是大小(1.4MB DL)有点令人生畏。你认为这是一个坚实的赌注吗?或者还有其他值得考虑的选择吗?
[编辑]
我正在开发的库是开源的,BSD许可证。
答案 0 :(得分:7)
PCRE太大了,因为正则表达式 hard 。而且大部分都是文档和支持代码;编译成目标代码时,它要小得多。
答案 1 :(得分:6)
RE2,Google regexp实现在线性时间内进行匹配(如果O(n)
是字符串的长度,则n
),PCRE和大多数其他正则表达式引擎在指数时间运行最糟糕的情况。另一个值得注意的O(n)
正则表达式匹配器是flex,但它在编译时需要所有可能的正则表达式。如果您正在寻找比PCRE更小的东西,请查看busybox中的正则表达式匹配器或lua中的模式匹配器。
答案 2 :(得分:3)
如果您对POSIX正则表达式语法感到满意,可以尝试TRE。如果您需要Perl语法,Google会有一个值得一试的新实现。
答案 3 :(得分:2)
PCRE几乎是正则表达式实现的事实标准(有充分理由)。不要担心大小,它很大,因为正则表达式实现很复杂。无论如何都要使用它。