Sublime语法正则表达式仅突出显示分隔符内的匹配

时间:2018-05-07 04:21:08

标签: regex sublimetext3 syntax-highlighting

我想将字符串与在指定分隔符内出现的正则表达式匹配,但分隔符本身,以便在Sublime Text包中进行语法高亮显示。我正在运行ST3。

例如,在sublime-notes包中,此<dict>元素用于匹配<>之间的文字,包括角度括号本身,这会导致<this>被突出显示,而不仅仅是&lt; this&gt;。

<dict>
    <key>comment</key>
    <string>Important, surrounded by &lt;...&gt;</string>
    <key>match</key>
    <string>(\&lt;[^\&gt;]*\&gt;)</string>
    <key>name</key>
    <string>constant.other.date.notes</string>
</dict>

如何修改<string>标记之间的正则表达式,使其不包含语法高亮显示中的弯头括号?

1 个答案:

答案 0 :(得分:1)

您可以将左右分隔符放在环绕构造中:

<string>(?&lt;=&lt;)([^&gt;]*)(?=&gt;)</string>

或者,使用CDATA块来避免序列化特殊的XML字符:

<string><![CDATA[(?<=<)([^>]*)(?=>)]]></string>

在XML解析器反序列化模式字符串后,模式将显示为(?<=<)([^>]*)(?=>)(?<=<)将匹配紧跟<字符之前的位置,而(?=>)积极向前看将确保下一个字符为>(或匹配将失败)。

相关问题