我需要在我正在编写的C++程序中实现正则表达式,我想使用re2,但我无法在windows上编译它。有没有人知道另一个正则表达式库或者它的名字叫什么,它在windows上很容易编译,不是一个“回溯”的正则表达式引擎,而是一个像re2这样的基于自动机理论的引擎(不管这意味着什么)?
或者只是弄清楚如何在windows上编译re2将是完美的。
发布于 2010-07-06 09:16:58
正则表达式是TR1标准的一部分,因此您很可能已经有了一个<tr1/regex>头,它contains了一个std::tr1::regex类和相关函数。
发布于 2010-07-06 14:20:01
看一看
http://www.complang.org/ragel/
它是一个外部数字用户线路,所以从技术上讲不是C++。但是,因为它从正则表达式生成纯C++ /C,所以它应该比在运行时构建的任何东西都快得多。/
例如。
action dgt { printf("DGT: %c\n", fc); }
action dec { printf("DEC: .\n"); }
action exp { printf("EXP: %c\n", fc); }
action exp_sign { printf("SGN: %c\n", fc); }
action number { /*NUMBER*/ }
number = (
[0-9]+ $dgt ( '.' @dec [0-9]+ $dgt )?
( [eE] ( [+\-] $exp_sign )? [0-9]+ $exp )?
) %number;
main := ( number '\n' )*;get编译为
st0:
if ( ++p == pe )
goto out0;
if ( 48 <= (*p) && (*p) <= 57 )
goto tr0;
goto st_err;
tr0:
{ printf("DGT: %c\n", (*p)); }
st1:
if ( ++p == pe )
goto out1;
switch ( (*p) ) {
case 10: goto tr5;
case 46: goto tr7;
case 69: goto st4;
case 101: goto st4;
}
if ( 48 <= (*p) && (*p) <= 57 )
goto tr0;
goto st_err;发布于 2011-12-02 06:24:56
我在http://code.google.com/p/re2win/上有一个用于Windows的RE2端口。它构建时有很多警告,没有错误。
https://stackoverflow.com/questions/3182927
复制相似问题