有没有Java的(免费)正则表达式引擎,可以将正则表达式编译为DFA,并在匹配DFA时进行组捕获?
我找到了dk.brics.automaton和jrexx,它们都编译为DFA,但似乎都不能进行组捕获。而我找到的其他引擎似乎都编译为NFA。
有没有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分钟缩短到了几秒钟)。
dk.brics.automaton 是一个DFA,似乎不支持捕获组。我预计这个特性是在两年内新增的。请查看 AutomatonMatcher 类。
请参见 http://www.brics.dk/automaton/doc/dk/brics/automaton/AutomatonMatcher.html#group(int)