36

Google の正規表現ライブラリ RE2 の Java バージョン、または同様の機能と優れたパフォーマンスを備えた Java ライブラリに出くわした人はいますか? パフォーマンス要件は、正規表現の長さと入力テキストの長さに関して線形時間です。

明確化

ほとんどの正規表現の実装では、バックトラッキング アルゴリズムを使用して入力テキストを照合するため、 のようないくつかの単純な正規表現では指数関数的(.*).(.*).(.*).(.*)です。RE2 は、Automata 理論の概念を使用して入力サイズに比例して変化するアルゴリズムを使用して、この問題を解決する Google のライブラリです。質問者は、このアルゴリズムに基づいた Java 用のライブラリが存在するかどうかを知りたがっています。

4

3 に答える 3

12

Google は本日、Go の RE2 実装のピュア Java ポートをリリースしました。ここで見つけることができます:

https://github.com/google/re2j

于 2015-02-18T02:00:55.550 に答える
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
于 2014-09-28T16:20:01.320 に答える
3

Google検索はこれをもたらしました。

https://github.com/logentries/re2-java

Linux 64ビットのみをサポートしていると書かれています。

編集: Google 自身が RE2 https://github.com/google/re2jのポートをリリースしたため、Alan Donovan が回答したように、より良い回答が利用可能になったと思います。

于 2014-09-23T23:48:41.027 に答える