持久正则表达式突出显示Sublime文本2

时间:2014-09-26 16:19:18

标签: regex sublimetext2 syntax-highlighting

我想要一个特别的评论"具有特殊亮点的语法。

例如:

我使用Sublime Text 2.我发现这个Persistent Regex Highlight似乎就是这么做的,但我似乎无法弄明白该怎么说....

" highlight anything between <!--x   and   x--> "

到目前为止,我可以得到这个基本字符串,&#34;哟&#34;要突出显示,我已经尝试了一堆正则表达式,但唉,我无法看到它! (避免使用正则表达式太多而且我的搜索条件没有具体说明)

{
    "regex": [{
        "pattern": "yo",
        "color": "ff0000",
        "ignore_case": false
    }]
}


这很有用......但我不明白。

{
    "regex": [{
        "pattern": "(?<=<!--x).*?(?=x-->)",
        "color": "ff0000",
        "ignore_case": false
    }]
}

我会欣赏任何方向。 - @sheriffderek

https://github.com/skuroda/PersistentRegexHighlight

1 个答案:

答案 0 :(得分:1)

所以,似乎你有一个有效的解决方案,但你正在寻找解释? (如果我在这里误解了这个问题,请纠正我。)

让我们将正则表达式分解为其组件:

(?<=    <!--x    )    .    *?    (?=    x-->    )
  • <!--xx-->是文字字符串,直接显示在文字中。

  • (?<= subpattern)被称为lookbehind断言。它要求匹配的文本以子模式开头,但它不包括返回的匹配文本中的子模式。在这种情况下,这意味着<!--x必须出现在任何突出显示的文本之前。

  • (?= subpattern)同样称为lookahead断言。完全相同的是,它要求子模式在匹配后进行,但不包含在其中。
  • .匹配除换行符之外的任何字符(可能是您想要的也可能不是
  • *?non greedy repeat,这意味着它将匹配之前任意数量的模式(在这种情况下为.),但如果它有多个匹配选项将挑选最短的一个。