【问题标题】:sublime text syntax definitionsublime text 语法定义
【发布时间】:2012-12-07 20:37:12
【问题描述】:

我正在尝试为 sublime 文本创建新语法。 在基于规则的文档突出显示中,引用如下:

每个规则都使用匹配的文本区域,因此将被排除在下一个规则的匹配尝试之外(少数例外除外)。

我有下一个我要强调的文件:

div
  div
    div

我有下一个要匹配的规则(例如):

{
  "name": "entity.name.tag.z",
  "match": "[A-z]+"
},
{
  "name": "entity.language.z",
  "match": "\\s*[A-z]+"
},

假设第一条规则必须匹配所有 3 个 div,所以第二条规则不匹配任何内容。

但只有第一个“div”匹配,第二个和第三个不匹配。如果我删除第二条规则,那么所有 3 条都正确匹配。

【问题讨论】:

  • 这不是你的问题的原因,但我不建议使用A-z,因为它包含这些字符:[\]^_`。请改用A-Za-z
  • 感谢您的信息,不知道,它适用于所有正则表达式还是仅崇高?
  • 这是字符类的一般属性。在字符类中创建范围时,它适用于 ASCII(或 Unicode)代码点。例如当您使用A-z 时,您将包含所有具有65 (A) 和122 (z) 之间的ASCII 代码的字符,其中包括提到的非字母字符。
  • 嗯不知道,非常感谢。

标签: regex text sublimetext2 definition


【解决方案1】:

我不是专家,但这是我的假设:

当您只有第一条规则时,它不会在一个匹配项中匹配三行,而是三个单独的匹配项,因为您的第一条规则不包含空格。 需要明确的是,比赛不是

[match1]div
          div
             div[/match1]

但是

[match1]div[/match1]
       [match1]div[/match1]
              [match1]div[/match1]

添加第二条规则后,它会在第二行的开头触发,因此在第一条规则之前,我期望的结果是

[match1]div[/match1]
[match2]    div[/match2]
[match2]         div[/match2]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 2014-04-03
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多