11

是否有任何(免费)Java 正则表达式引擎可以将正则表达式编译为 DFA,并在匹配 DFA 时进行组捕获?

我找到了 dk.brics.automaton 和 jrexx,它们都编译为 DFA,但似乎都无法进行组捕获。虽然我发现的其他引擎似乎可以编译为 NFA。

4

5 回答 5

3

试试这个(可能不是 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 分钟缩短到了几秒钟)。

于 2011-05-12T09:25:39.523 回答
1

我最近写了一个:tree-regex

于 2011-09-28T13:39:53.413 回答
0

对于 C,有TRE和 Google 的RE2库。TRE 使用 DFA,RE2 使用 NFA(据我所知),两者都可以分组匹配。但是我没有看到这样的 Java 库。

于 2010-07-29T09:01:04.607 回答
-2

你可以试试 Pat 正则表达式库@http ://www.javaregex.com/

于 2010-02-07T03:19:58.497 回答
-2

dk.brics.automaton 是 DFA 似乎确实可以捕获组。我希望这个功能在这个问题之后的两年内是新的。查看 AutomatonMatcher 类。

http://www.brics.dk/automaton/doc/dk/brics/automaton/AutomatonMatcher.html#group(int )

于 2011-07-22T22:31:08.380 回答