我正在为 Lua 编写一个 jFlex 词法分析器,并且在设计正则表达式以匹配语言规范的一个特定部分时遇到问题:
文字字符串也可以使用长括号括起来的长格式来定义。我们将第 n 级的左长括号定义为一个左方括号,后跟 n 个等号,然后是另一个左方括号。因此,级别 0 的左长括号写为 [[,级别 1 的左长括号写为 [=[,依此类推。闭合长括号的定义类似;例如,第 4 级的右长括号写为]====]。长字符串以任何级别的左长括号开始,并在同一级别的第一个右长括号结束。这种括号形式的文字可以运行多行,不解释任何转义序列,并忽略任何其他级别的长括号。它们可以包含除适当级别的右括号之外的任何内容。
简而言之,我正在尝试设计一个正则表达式,它将匹配一个开始的长括号、中间的字符串内容和结束的长括号。只有当开始长括号和结束长括号具有相同数量的等号(可以是零或更多)时,才会发生匹配。