我想将字符串与指定分隔符中出现的正则表达式匹配,而不是分隔符本身,以便在Sublime Text包中进行语法突出显示。我正在运行 ST3。
例如,在 sublime-notes 包中,这个<dict>
元素用于匹配<
和>
之间的文本,包括尖括号本身,这会导致<this>
被突出显示,而不仅仅是<this
>。
<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>
标记之间的正则表达式以在语法突出显示中不包含肘部括号?
您可以将左右分隔符放在环视构造中:
<string>(?<=<)([^>]*)(?=>)</string>
或者,使用 CDATA 块来避免序列化特殊的 XML 字符:
<string><![CDATA[(?<=<)([^>]*)(?=>)]]></string>
在 XML 解析器反序列化模式字符串后,模式将看起来像(?<=<)([^>]*)(?=>)
,并且(?<=<)
将匹配紧跟在<
char 前面的位置,而(?=>)
积极的前瞻将确保下一个字符>
(否则匹配将失败)。