Lua 用の jFlex lexer を作成していますが、言語仕様の特定の部分に一致するように正規表現を設計する際に問題が発生しています。
リテラル文字列は、長い括弧で囲まれた長い形式を使用して定義することもできます。レベル n の左長い括弧は、左角括弧の後に n 個の等号が続き、その後に別の左角括弧が続くものとして定義します。したがって、レベル 0 の左大括弧は [[ と記述され、レベル 1 の左大括弧は [=[ と記述されます。以下同様です。閉じ長括弧も同様に定義されます。たとえば、レベル 4 の閉じ長括弧は ]====] のように記述されます。長い文字列は、任意のレベルの左長い括弧で始まり、同じレベルの最初の長い閉じ括弧で終わります。このブラケット形式のリテラルは、複数行にわたって実行でき、エスケープ シーケンスを解釈せず、他のレベルの長いブラケットを無視します。適切なレベルの閉じ括弧以外は何でも含めることができます。
一言で言えば、長い開き括弧、その間の文字列の内容、長い閉じ括弧に一致する正規表現を設計しようとしています。開始長括弧と終了長括弧の等号の数が同じである場合にのみ、一致が発生する必要があります。