正则表达式匹配括号

时间:2012-12-13 04:15:09

标签: regex sublimetext2

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

%<token>

我写的正则表达式是

%<.+?>

这适用于大多数情况,但未能通过以下声明

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:2)

通过正则表达式的通用方法很难 - 在this thread中已经很好地解释了。

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

答案 1 :(得分:0)

你为什么用“?” ?试试没有。 如果它是一行中唯一的标记: ^%≤(。+)&GT; $ 如果它被空格包围: \ S%≤(。+)&GT; \ S 顺便说一句......如果你需要,第1组会获取内容。