我需要在我正在编写的C ++程序中实现正则表达式,并且我想使用RE2,但我无法在Windows上编译它。有谁知道另一个正则表达式库或任何称为在Windows上很容易编译的称为“回溯” Regex引擎,而是基于自动机理论(无论是RE2)是一个基于自动机理论吗?

或者只是弄清楚如何在Windows上编译RE2是完美的。

有帮助吗?

解决方案

正则表达式是TR1标准的一部分,因此您已经有一个 <tr1/regex> 标题 包含 一种 std::tr1::regex 类及相关功能。

其他提示

看一下

http://www.complang.org/ragel/

这是外部DSL,因此从技术上讲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' )*;

汇编到

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;

我有一个适用于Windows的RE2端口 http://code.google.com/p/re2win/ 。它建立了许多警告,没有错误。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top