1

我正在尝试为崇高文本制作新语法。在基于规则的文档中突出显示,这里是引用:

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

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

div
  div
    div

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

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

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

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

4

1 回答 1

2

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

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

[match1]div
          div
             div[/match1]

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

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

[match1]div[/match1]
[match2]    div[/match2]
[match2]         div[/match2]
于 2012-12-11T15:44:21.620 回答