我正在尝试为Simulink的目标语言编译器(TLC)文件编写Sublime Text 2语法高亮显示器。这是一种用于自动生成代码的脚本语言。在TLC中,扩展令牌内容的语法(类似于在C或C ++中取消引用指针)是
%<token>
我写的正则表达式是
%<.+?>
这适用于大多数情况,但未能通过以下声明
%<LibAddToCommonIncludes("<string.h>")>
如果语句本身在一行上,则将正则表达式修改为贪婪修复此问题,但在其他几种情况下失败。所以这不是一个选择。
对于该行,突出显示在第一个>
而不是第二个{}停止。如何修改正则表达式来处理这种情况?
如果有一个通用表达式可以处理任意数量的嵌套<>
对,那就太棒了;例如
%<...<...>...<...<...>...>...>
其中点是可选字符。上面的整个表达式应该是一个匹配。
答案 0 :(得分:2)
通过正则表达式的通用方法很难 - 在this thread中已经很好地解释了。
您可以尝试通过正则表达式专门匹配2个<
个字符。类似于%<.+?<.+?>.+?>
。
答案 1 :(得分:0)
你为什么用“?” ?试试没有。 如果它是一行中唯一的标记: ^%≤(。+)&GT; $ 如果它被空格包围: \ S%≤(。+)&GT; \ S 顺便说一句......如果你需要,第1组会获取内容。