Ну, я боюсь, что токенизация с регулярными выражениями недостаточно хороша для этой задачи. Регулярные выражения просто недостаточно мощны.
Нет способа сравнить количество меток '=' с помощью простых регулярных выражений в jFlex. В Perl для этого есть хак (\ 1, как предложено выше), но речь идет не о программировании на Perl, а о лексере jFlex.
Решение состоит в том, чтобы пойти с \ [= * \ [для левого скобочного токена, \] = * \] для правого скобочного токена, а затем в слое выше (синтаксическом анализаторе) сравнить, если они совпадают по длине.
В любом случае, вы можете посмотреть на read_long_string () в исходном коде lua в llex.c и посмотреть, как они это сделали, вообще не используя регулярные выражения.