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