【问题标题】:.YAML-tmLanguage strings overlap each other.YAML-tmLanguage 字符串相互重叠
【发布时间】:2015-01-10 18:38:25
【问题描述】:

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

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

- 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)

【问题讨论】:

    标签: regex string yaml sublimetext3


    【解决方案1】:

    除了\'.*\',您可以使用:\'[^']*\'(同样适用于双引号)。

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

    通过使用[^']*,虽然操作符仍然“贪婪”,但它不能越过右引号。 (如果您不知道语法,[^'] 仅表示“not '”。)

    【讨论】:

    • 这似乎行得通。 :) 另外,我想我可以在我的代码中使用 startend 值。但也很高兴知道纯正则表达式的方式。 ^_^
    猜你喜欢
    • 2018-08-12
    • 2019-04-26
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 2019-03-25
    相关资源
    最近更新 更多