升华文本';python中正则表达式的语法高亮显示泄漏到周围的代码中

升华文本';python中正则表达式的语法高亮显示泄漏到周围的代码中,python,sublimetext2,color-scheme,Python,Sublimetext2,Color Scheme,我有一个问题,崇高的文本应该是一般所有的编辑。当我有一个这样的正则表达式时 listRegex = re.findall(r'[*][[][[].*', testString) 正则表达式后面的所有文本都将被错误地突出显示,因为[[],特别是没有右括号的[。虽然此正则表达式的意图是正确的,但编辑器不知道这一点 这只是我不知道如何处理的一个烦恼。有人知道如何解决这个问题吗?虽然它不能真正回答您的问题,但您可以使用不同的正则表达式: listRegex = re.findall(r'\*\[\[.

我有一个问题,崇高的文本应该是一般所有的编辑。当我有一个这样的正则表达式时

listRegex = re.findall(r'[*][[][[].*', testString)
正则表达式后面的所有文本都将被错误地突出显示,因为
[[]
,特别是没有右括号的
[
。虽然此正则表达式的意图是正确的,但编辑器不知道这一点


这只是我不知道如何处理的一个烦恼。有人知道如何解决这个问题吗?

虽然它不能真正回答您的问题,但您可以使用不同的正则表达式:

listRegex = re.findall(r'\*\[\[.*', testString)
或者您可以防止任何正则表达式高亮显示:

listRegex = re.findall(R'[*][[][[].*', testString)

适当的解决方案 将以下内容添加到第266行的
../Packages/Python/Regular Expressions(Python).tmLanguage
(第一个和第三个块是上下文):

名称
constant.other.character-class.set.regexp
模式

比赛
\[

包括
#字符类

这是Sublime Text的Python语法Highlighter的一个已知缺陷,它只影响原始字符串

顺便说一下,在正则表达式中,可以通过两种方式匹配特殊字符:

  • 用方括号括起来:
    [[]

  • 用反斜杠转义:
    \[

  • 第二个是首选,因此您可以将代码更改为:

    listRegex = re.findall(r'\*\[\[.*', testString)
    

    只需在行尾的注释中加上右大括号。行本身看起来可能不太好,但至少不会污染其余的代码高亮显示。您需要修改
    Package/Python/Regular Expressions(Python).tmLanguage
    文件来解决这个问题。顺便说一句,谢谢你的回答。还有所有其他试图帮助的人:)将
    r
    更改为
    r
    有什么作用?我完全不理解上面的句子。@Qwerty:Python不在乎你使用哪个。如果原始字符串使用小写的r,升华文本只会在语法上突出显示正则表达式。我不知道如果这是故意的还是故意的accidental@Eric所以我们实际上是在利用一个bug,哈哈,聪明