有没有人遇到Java版的Google正则表达式库RE2或具有类似功能和良好性能的Java库?性能要求是关于正则表达式的长度和输入文本长度的线性时间.
大多数正则表达式实现使用回溯算法来匹配输入文本,因此在一些简单的正则表达式上是指数式的(.*).(.*).(.*).(.*).RE2是谷歌的一个库,它通过使用一种算法来解决这个问题,该算法使用自动机理论的概念与输入大小线性变化.提问者想要知道是否存在基于该算法的Java库.
小智 5
这里有一个 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
Run Code Online (Sandbox Code Playgroud)
谷歌搜索得出了这个。
https://github.com/logentries/re2-java
据说只支持linux 64位。
编辑:我相信现在有了更好的答案,正如 Alan Donovan 的回答,因为 Google 自己已经发布了 RE2 的端口 https://github.com/google/re2j
| 归档时间: |
|
| 查看次数: |
3693 次 |
| 最近记录: |