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