Этот документ для класса Pattern в java 9 указывает, что java использует традиционное сопоставление на основе NFA для регулярных выражений.Но согласно документации класса Pattern, он также может обрабатывать обратных ссылок в регулярных выражениях.Итак, как это точно реализовано, если он не использует рекурсивную реализацию обратного отслеживания для обработки регулярных выражений?
Для некоторых регулярных выражений - (шаблон регулярных выражений 1) \ 1 (шаблон регулярных выражений 2), я предполагаю, что это будетсделать следующим образом:
1) Generate NFA1 for regex pattern 1 and NFA2 for regex pattern 2
2) Start matching the input string with NFA1 and if any group is found store
it. At every point, check if remaining part of the string can match the
\1(regex pattern 2) and if it does report a match
3) Else report match not found
Это правильно?