是否有任何(免费)Java 正则表达式引擎可以将正则表达式编译为 DFA,并在匹配 DFA 时进行组捕获?
我找到了 dk.brics.automaton 和 jrexx,它们都编译为 DFA,但似乎都无法进行组捕获。虽然我发现的其他引擎似乎可以编译为 NFA。
试试这个(可能不是 DFA,但比 java.util 快)http://jregex.sourceforge.net/gstarted-advanced.html#ngroups,或者这个:http ://userguide.icu-project.org
根据该测试:http ://tusker.org/regex/regex_benchmark.html ,两者都很快(我们都知道基准测试只测试基准测试的创建者想要测试的内容)。
当我需要真正快速的 DFA 正则表达式时,我生成了一个使用 grep 的进程;-)(对于 6GB 的日志文件,它将我的时间从 10 分钟缩短到了几秒钟)。
我最近写了一个:tree-regex。
你可以试试 Pat 正则表达式库@http ://www.javaregex.com/。
dk.brics.automaton 是 DFA 似乎确实可以捕获组。我希望这个功能在这个问题之后的两年内是新的。查看 AutomatonMatcher 类。
见http://www.brics.dk/automaton/doc/dk/brics/automaton/AutomatonMatcher.html#group(int )