我想将字符串与在指定分隔符内出现的正则表达式匹配,但不分隔符本身,以便在Sublime Text包中进行语法高亮显示。我正在运行ST3。
例如,在sublime-notes包中,此<dict>
元素用于匹配<
和>
之间的文字,包括角度括号本身,这会导致<this>
被突出显示,而不仅仅是&lt; this
&gt;。
<dict>
<key>comment</key>
<string>Important, surrounded by <...></string>
<key>match</key>
<string>(\<[^\>]*\>)</string>
<key>name</key>
<string>constant.other.date.notes</string>
</dict>
如何修改<string>
标记之间的正则表达式,使其不包含语法高亮显示中的弯头括号?
答案 0 :(得分:1)
您可以将左右分隔符放在环绕构造中:
<string>(?<=<)([^>]*)(?=>)</string>
或者,使用CDATA块来避免序列化特殊的XML字符:
<string><![CDATA[(?<=<)([^>]*)(?=>)]]></string>
在XML解析器反序列化模式字符串后,模式将显示为(?<=<)([^>]*)(?=>)
,(?<=<)
将匹配紧跟<
字符之前的位置,而(?=>)
积极向前看将确保下一个字符为>
(或匹配将失败)。