我想知道,因为我正在制作.YAML-tmLanguage
文件(对于Minecraft命令),我想为NBT标签制作一些代码。目前,它会检测到所有命令@a
,@r
,@p
,@e
,true
,false
以及任何数字。< / 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)
答案 0 :(得分:2)
而不是\'.*\'
,您可以使用:\'[^']*\'
(对于双引号也是如此)。
您遇到的问题是正则表达式*
运算符是“贪婪的”,并且会消耗尽可能多的字符。因此,.*
正在吞下两个引号之间的所有内容!
使用[^']*
,虽然操作员仍然“贪婪”,但不能超过结束引号。 (如果您不知道语法,[^']
只是表示“not '
”。)