Подтвердить что ты не робот

RE2-подобная библиотека регулярных выражений для Java?

Кто-нибудь попадал на Java-версию библиотеки регулярных выражений Google RE2 или java-библиотеку с аналогичными возможностями и хорошей производительностью? Требование производительности - это линейное время относительно длины регулярного выражения и длины входного текста.

Разъяснение

В большинстве реализаций регулярных выражений используется алгоритм обратного отслеживания для соответствия входному тексту и, следовательно, экспоненциальный в некоторых простых регулярных выражениях, таких как (.*).(.*).(.*).(.*). RE2 - это библиотека из Google, которая решает эту проблему, используя алгоритм, который линейно изменяется с размером ввода, используя концепции теории автоматов. Вопросник хочет знать, существуют ли библиотеки для Java, основанные на этом алгоритме.

4b9b3361

Ответ 1

Сегодня Google выпустил порт чистой версии Java для реализации Go RE2. Вы можете найти его здесь:

https://github.com/google/re2j

Ответ 2

Для 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

Ответ 3

Поиск в Google дал это.

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

он говорит, что поддерживает только 64-разрядную версию Linux.

Изменить: Я считаю, что теперь доступен лучший ответ, как ответил Алан Донован, поскольку сами Google выпустили порт RE2 https://github.com/google/re2j