是否存在类似 RE2 的 Java 正则表达式库?
有没有人遇到过Java版本的Google正则表达式库RE2或具有类似功能和良好性能的Java库?性能要求是正则表达式长度和输入文本长度的线性时间。
澄清
大多数正则表达式实现使用回溯算法来匹配输入文本,因此在一些简单的正则表达式(如 .RE2是来自谷歌的一个库,它通过使用一种使用自动机理论概念随输入大小线性变化的算法来解决这个问题。提问者想知道是否存在基于此算法的 Java 库。(.*).(.*).(.*).(.*)
有没有人遇到过Java版本的Google正则表达式库RE2或具有类似功能和良好性能的Java库?性能要求是正则表达式长度和输入文本长度的线性时间。
大多数正则表达式实现使用回溯算法来匹配输入文本,因此在一些简单的正则表达式(如 .RE2是来自谷歌的一个库,它通过使用一种使用自动机理论概念随输入大小线性变化的算法来解决这个问题。提问者想知道是否存在基于此算法的 Java 库。(.*).(.*).(.*).(.*)
这里有一个Java的有限状态自动机包:www.brics.dk/automaton;另请参阅此文章。下面是一个简单的示例:
RegExp r = new RegExp("ab(c|d)*");
Automaton a = r.toAutomaton();
String s = "abcccdc";
System.out.println("Match: " + a.run(s)); // prints: true