正则表达式匹配括号对

标签 regex sublimetext2

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

%<token>

我编写的匹配此的正则表达式是

%<.+?>

这适用于大多数情况,但对于以下语句则失败

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

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

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

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

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

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

最佳答案

通过正则表达式的通用方法很困难 - 正如 this thread 中很好地解释的那样.

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

关于正则表达式匹配括号对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13852840/

相关文章:

ruby 正则表达式和分组

regex - 在 bash 中分解文本文件

macos - 操作系统 : Remap caps lock key to funktion key or Fn?

sublimetext2 - Sublime Text : Adding dot as word separator?

python - api : how to get selected text from object sublime. 选择

sublimetext3 - 我可以对 Sublime Text 中的选择进行数学运算吗?

javascript - 有人可以帮助我使用这个 javascript 正则表达式将列表项字符串转换为仅包含项目文本的数组(没有列表项 # 或换行符)

regex - sed 和 regex 来添加行

java - Scala 中的拆分正则表达式保留分隔符

c - 尝试使用 Sublime Text 2 编译 C 但无法使用 scanf 输入任何内容