.YAML-tmLanguage字符串相互重叠

时间:2015-01-10 18:38:25

标签: regex string yaml sublimetext3

我想知道,因为我正在制作.YAML-tmLanguage文件(对于Minecraft命令),我想为NBT标签制作一些代码。目前,它会检测到所有命令@a@r@p@etruefalse以及任何数字。< / p>

所以我想知道,我将如何制作琴弦?目前这是我的代码:

- comment: String (single)
  name: string.quoted.single.mcCmd
  match: \'.*\'
- comment: String (double)
  name: string.quoted.double.mcCmd
  match: \".*\"

当我在一行中只有一个类型(单/双)字符串之一时,这是有效的。例如,执行text:"Hello"会突出显示"Hello"。如果我text:"Hello",color:'blue',它也会有用,但如果我尝试text:"Hello",color:"blue",它会突出显示"Hello",color:"blue",而不只是"Hello""blue"

那么如何让代码检测“打开”和“关闭”字符串呢?


(运行Sublime Text 3,安装了AAAPackageDev)

1 个答案:

答案 0 :(得分:2)

而不是\'.*\',您可以使用:\'[^']*\'(对于双引号也是如此)。

您遇到的问题是正则表达式*运算符是“贪婪的”,并且会消耗尽可能多的字符。因此,.*正在吞下两个引号之间的所有内容!

使用[^']*,虽然操作员仍然“贪婪”,但不能超过结束引号。 (如果您不知道语法,[^']只是表示“not '”。)