是否有Java的任何(免费)正则表达式引擎,可以将正则表达式编译为DFA,并在匹配DFA时进行组捕获?
我找到了dk.brics.automaton和jrexx,它们都编译成DFA,但似乎都无法进行群组捕获。虽然我发现的其他引擎似乎编译为NFA。
答案 0 :(得分: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分钟减少到几秒钟)。
答案 1 :(得分:2)
我最近写了一篇:tree-regex。
答案 2 :(得分:0)
答案 3 :(得分:-2)
您可以尝试使用Pat正则表达式库@ http://www.javaregex.com/。
答案 4 :(得分:-2)
dk.brics.automaton是DFA似乎确实捕获组。我希望这个问题在这个问题的两年内是新的。查看类AutomatonMatcher。
见http://www.brics.dk/automaton/doc/dk/brics/automaton/AutomatonMatcher.html#group(int)