我正在尝试为 Simulink 的目标语言编译器 (TLC) 文件编写 Sublime Text 2 语法突出显示。这是一种用于自动生成代码的脚本语言。在 TLC 中,扩展标记内容的语法(类似于在 C 或 C++ 中取消引用指针)是
%<token>
我编写的匹配此的正则表达式是
%<.+?>
这适用于大多数情况,但对于以下语句则失败
%<LibAddToCommonIncludes("<string.h>")>
如果语句本身位于一行,则将正则表达式修改为贪婪可以修复此问题,但在其他几种情况下会失败。所以这不是一个选择。
对于该行,突出显示在第一个 >
处停止而不是第二个。如何修改正则表达式来处理这种情况?
如果有一个通用表达式可以处理任意数量的嵌套 <>
那就太好了成对;例如
%<...<...>...<...<...>...>...>
其中点是可选字符。上面的整个表达式应该是一个匹配。
最佳答案
通过正则表达式的通用方法很困难 - 正如 this thread 中很好地解释的那样.
你可以尝试专门匹配2 <
通过正则表达式的字符。类似 %<.+?<.+?>.+?>
.
关于正则表达式匹配括号对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13852840/