Основанные на DFA модули регулярных выражений для Java с Capture
Существуют ли (бесплатные) механизмы регулярных выражений для Java, которые могут компилировать регулярное выражение в DFA и выполнять захват группы при сопоставлении DFA?
Я обнаружил dk.brics.automaton и jrexx, которые компилируются в DFA, но ни один из них не может сделать групповой захват. В то время как другие движки, которые я нашел, похоже, компилируются в NFA.
5 ответов
Попробуйте этот (вероятно, не DFA, но быстрее, чем java.util) http://jregex.sourceforge.net/gstarted-advanced.html, или этот: http://userguide.icu-project.org/
в соответствии с этим тестом: http://tusker.org/regex/regex_benchmark.html оба являются быстрыми (все мы знаем, что тесты тестируют только то, что хотел протестировать создатель теста).
Когда мне нужно было действительно быстрое регулярное выражение DFA, я породил процесс, использующий grep;-) (для файла журнала объемом 6 ГБ это сократило мое время с 10 минут до нескольких секунд).
dk.brics.automaton - это DFA, по-видимому, для захвата групп. Я ожидаю, что эта функция является новой в течение двух лет после этого вопроса. Проверьте класс AutomatonMatcher.
См. http://www.brics.dk/automaton/doc/dk/brics/automaton/AutomatonMatcher.html).
Вы можете попробовать библиотеку регулярных выражений Pat @ http://www.javaregex.com/.