2

我正在尝试为 Simulink 的目标语言编译器(TLC) 文件编写 Sublime Text 2 语法荧光笔。这是一种用于自动生成代码的脚本语言。在 TLC 中,扩展标记内容的语法(类似于取消引用 C 或 C++ 中的指针)是

%<token>

我写的匹配这个的正则表达式是

%<.+?>

这适用于大多数情况,但不适用于以下语句

%<LibAddToCommonIncludes("<string.h>")>

如果语句本身在一行上,则将正则表达式修改为贪婪可以解决此问题,但在其他几种情况下会失败。所以这不是一个选择。

对于该行,突出显示在第一行>而不是第二行停止。如何修改正则表达式来处理这种情况?

如果有一个通用表达式可以处理任意数量的嵌套<>对,那就太好了;例如

%<...<...>...<...<...>...>...>

其中点是可选字符。上面的整个表达式应该是一个匹配项。

4

1 回答 1

2

通过正则表达式的通用方法是困难的 - 正如在这个线程中很好地解释的那样。

您可以尝试<通过正则表达式专门匹配 2 个字符。类似的东西%<.+?<.+?>.+?>

于 2012-12-13T16:57:40.397 回答