字符串的\和'
"的字符串也有这个问题
如:
原文 "\" 123 456
这里会出现 “123 456”被错误渲染成绿色字符串色的问题
目前的 end 规则:
end: {match: /(?<!\\)(?m)'|$/}
当字符串字面量以奇数个反斜杠结尾时,负向后瞻 (?<!\) 会误判——因为 Python 里 "\" 是两个字符 \ + \ ,第二个反斜杠在语法上确实转义了引号,但高亮引擎看到的只是“最后一个字符是 \ ”,于是认为引号被转义,继续往下找结束引号,导致后续文本全部被吞进字符串作用域。
把“是否被转义”的判断从单个字符改为偶奇计数:
end: {match: /(?<!\\)(?:\\\\)*'|$/}
即:允许前面有偶数个反斜杠,才算真正的字符串结束。
字符串的\和'
"的字符串也有这个问题
如:
原文 "\" 123 456
这里会出现 “123 456”被错误渲染成绿色字符串色的问题
目前的 end 规则:
end: {match: /(?<!\\)(?m)'|$/}当字符串字面量以奇数个反斜杠结尾时,负向后瞻 (?<!\) 会误判——因为 Python 里 "\" 是两个字符 \ + \ ,第二个反斜杠在语法上确实转义了引号,但高亮引擎看到的只是“最后一个字符是 \ ”,于是认为引号被转义,继续往下找结束引号,导致后续文本全部被吞进字符串作用域。
把“是否被转义”的判断从单个字符改为偶奇计数:
end: {match: /(?<!\\)(?:\\\\)*'|$/}即:允许前面有偶数个反斜杠,才算真正的字符串结束。