背景:
对于 Sublime Text 中的语法高亮,
您可以编写一个tmLanguage
带有相应文件的tmTheme
文件。
该tmLanguage
文件包含您为其命名的正则表达式,
然后该tmTheme
文件使用这些名称来设置捕获的内容的样式。
我想根据之前出现的重复图案的数量对相同的图案进行不同的着色。或者,换一种说法,我想以不同的方式设置每行上每个模式的第 n 个匹配项。
问题:
例如,
如何编写 3 个正则表达式来匹配以下粗体组?
<foo> <bar><baz>
<foo> <bar> <baz>
<foo><bar> <baz>
任何东西都可以在 < > 里面。
表达式 1 将捕获表达式的第一个实例<*.?>
2 将捕获表达式的第二个实例<*.?>
3 将捕获的第三个实例<*.?>
假设上面的三个例子实际上是同一行。
我的目标是让每个组都有不同的颜色
<this would be red> <this would be orange> <this would be yellow> <etc..>
正则表达式语言是Oniguruma。
到目前为止我的尝试:
我可以像这样捕获第一组:
^<.*?>
我不知道如何只捕获第二组
^<.*?>{2} captures nothing
<.*?>{2} captures nothing
<.*?>{2,} captures nothing
^(?:<.*?>)<.*?> captures 1st and 2nd
^(?!<.*?>)<.*?> captures nothing
^(?=<.*?>)(<.*?>) captures 1st
^(?=<.*?>)(<.*?>){1} captures 1st
^(?=<.*?>)(<.*?>){2} captures 1st and 2nd
(?=<.*?>)(<.*?>) captures everything