【发布时间】:2012-09-20 02:02:02
【问题描述】:
我在内存有限的系统上,boost::regex 太大。有哪些选项可以将我的正则表达式直接编译为 C/C++ 以及我应该排除多少 KB 的代码大小?以尽可能减少内存和代码大小为目标。
我正在寻找小于 100kb 的代码大小和相同的内存使用量。 Boost 正则表达式似乎约为 470kb,太大了。
【问题讨论】:
-
无论如何,
boost::regex是 C++,而不是 C。 -
您的正则表达式需要有多复杂?在“Beautiful Code”一书中,有一些简单的正则表达式函数,可能相当于几百字节的代码和堆栈空间量,主要由正则表达式中出现的星号 (
*) 控制。但这些都是非常简单的正则表达式。 -
正则表达式将匹配 HTTP 协议的不同部分,因此不仅仅是基本的
*和+ -
匹配 HTTP 什么?网址?要求?标头?身体?
-
(GET|POST|HEAD)[[:blank:]]+(?:([[:alpha:]]{1,6})://([^/[:blank:]]+))?(/[^[:blank:]]*)(?:[[:blank:]]+HTTP/([[:digit:]]{1,3})\\.([[:digit:]]{1,4}))?例如。
标签: c++ regex compiler-construction