Sublime Text中> =和< =运算符的语法高亮显示

时间:2014-03-04 08:52:59

标签: regex syntax-highlighting sublimetext

我正在尝试为Matlab运算符>=<=获取正确的语法突出显示。目前,只突出显示<> - 而不是=。但是例如==突出显示。

我查看了Matlab.tmLanguage文件,&gt;=&lt;=都包含在运营商正则表达式中。

这里可能有什么问题?

1 个答案:

答案 0 :(得分:2)

问题在于完整的正则表达式,可在以下位置找到:

</dict>
<key>operators</key>
<dict>
    <key>comment</key>
    <string>Operator symbols</string>
    <key>match</key>
    <string>\s*(==|~=|&gt;|&gt;=|&lt;|&lt;=|&amp;|&amp;&amp;|:|\||\|\||\+|-|\*|\.\*|/|\./|\\|\.\\|\^|\.\^)\s*</string>
    <key>name</key>
    <string>keyword.operator.symbols.matlab</string>
</dict>

问题是or'ed子表达式(|&gt;|&gt;=|&lt;|&lt;=)的顺序。例如。 &gt;&gt;=之前匹配,然后根本不匹配。 因此,解决方案是更改子表达式的顺序,首先匹配较长的表达式。即将match字符串更改为:

 \s*(==|~=|&gt;=|&gt;|&lt;=|&lt;|&amp;|&amp;&amp;|:|\||\|\||\+|-|\*|\.\*|/|\./|\\|\.\\|\^|\.\^)\s*