我正在尝试为sublime文本创建新语法。 根据规则突出显示文档,这里是引用:
每个规则都会使用匹配的文本区域,因此将从下一个规则的匹配尝试中排除(除少数例外情况外)。
我有下一个文件,我想突出显示:
div
div
div
我有下一个要匹配的规则(例如):
{
"name": "entity.name.tag.z",
"match": "[A-z]+"
},
{
"name": "entity.language.z",
"match": "\\s*[A-z]+"
},
假设第一条规则必须匹配所有3个div,所以第二条规则与任何东西都不匹配。
但只有第一个“div”匹配,第二个和第三个不匹配。如果我删除第二条规则,则所有3条都正确匹配。
答案 0 :(得分:2)
我不是专家,但这是我的假设:
当你只有第一条规则时,它与一条匹配中的三条线不匹配,它是三个单独的匹配,因为你的第一条规则不包括空格。 要清楚,匹配不是
[match1]div
div
div[/match1]
但
[match1]div[/match1]
[match1]div[/match1]
[match1]div[/match1]
添加第二条规则后,它会在第二条线的开头触发,因此在第一条规则之前触发,而我期望的结果是
[match1]div[/match1]
[match2] div[/match2]
[match2] div[/match2]