.YAML-tmLanguage字符串相互重叠
.YAML-tmLanguage strings overlap each other
我想知道,因为我正在制作一个 .YAML-tmLanguage
文件(用于 Minecraft 命令),所以我想为 NBT 标签制作一些代码。目前它检测到所有命令,@a
、@r
、@p
、@e
、true
、false
和任何数字。
所以我想知道,我将如何制作字符串?目前这是我的代码:
- comment: String (single)
name: string.quoted.single.mcCmd
match: \'.*\'
- comment: String (double)
name: string.quoted.double.mcCmd
match: \".*\"
当我在一行中只有任一类型 (single/double) 的字符串时,这会起作用。例如,执行 text:"Hello"
将使 "Hello"
突出显示。如果我执行 text:"Hello",color:'blue'
,它也会起作用,但如果我尝试执行 text:"Hello",color:"blue"
,它会突出显示 "Hello",color:"blue"
,而不仅仅是 "Hello"
和 "blue"
。
那么我如何让代码检测到 "opening" 和 "closing" 字符串?
(运行 Sublime Text 3,安装了 AAAPackageDev)
代替\'.*\'
,您可以使用:\'[^']*\'
(双引号也类似)。
您遇到的问题是正则表达式 *
运算符是 "greedy",并且会尽可能多地使用字符。因此,.*
吞没了两个引号之间的所有内容!
使用[^']*
,虽然运算符还是"greedy",但是不能超过右引号。 (如果您不知道语法,[^']
就意味着“not '
”。)
我想知道,因为我正在制作一个 .YAML-tmLanguage
文件(用于 Minecraft 命令),所以我想为 NBT 标签制作一些代码。目前它检测到所有命令,@a
、@r
、@p
、@e
、true
、false
和任何数字。
所以我想知道,我将如何制作字符串?目前这是我的代码:
- comment: String (single)
name: string.quoted.single.mcCmd
match: \'.*\'
- comment: String (double)
name: string.quoted.double.mcCmd
match: \".*\"
当我在一行中只有任一类型 (single/double) 的字符串时,这会起作用。例如,执行 text:"Hello"
将使 "Hello"
突出显示。如果我执行 text:"Hello",color:'blue'
,它也会起作用,但如果我尝试执行 text:"Hello",color:"blue"
,它会突出显示 "Hello",color:"blue"
,而不仅仅是 "Hello"
和 "blue"
。
那么我如何让代码检测到 "opening" 和 "closing" 字符串?
(运行 Sublime Text 3,安装了 AAAPackageDev)
代替\'.*\'
,您可以使用:\'[^']*\'
(双引号也类似)。
您遇到的问题是正则表达式 *
运算符是 "greedy",并且会尽可能多地使用字符。因此,.*
吞没了两个引号之间的所有内容!
使用[^']*
,虽然运算符还是"greedy",但是不能超过右引号。 (如果您不知道语法,[^']
就意味着“not '
”。)