Notepad++ - 更改转义字符

9

我正在使用Notepad++编辑的PL\SQL代码中,有以下内容:

where REGEXP_SUBSTR (a.val, '(\d+)\', 1, 1, NULL, 1) = b.key

由于 Notepad++ 不将 ' 解释为引号结束符,因此源代码的其余部分没有语法高亮 - 它呈灰色,就像引用文本一样。有没有办法告诉 Notepad++ 不要将 \ 解释为转义字符,因此 ' 将被解释为有效的引号结束符?我已经搜索了程序首选项,但没有任何效果。
编辑: 奇怪的是,当我打开一个新文件,输入这一行,选择语言 > S > SQL,然后文本正确地高亮显示。 但当我更改选项卡然后返回时,我再次看到错误的着色。重新选择语言 > S > SQL也没有任何区别。

\' 怎么会是一个有效的结束引号?你能在 'foo\'bar\' 中找到结束引号吗? - Avinash Raj
@AvinashRaj 这是PLSQL,所以你应该写成:'foo\''bar\'。在PLSQL中,\\不是转义字符,我希望Notepad++能够以相同的方式解释它。 - Michał Herman
1
选择 语言 > S > SQL,查看外观 - Wiktor Stribiżew
@stribizhev 我编辑了问题。 - Michał Herman
2
我觉得这是一个bug。 - Wiktor Stribiżew
1
如果正则表达式的最后一个字符是实际的反斜杠,那么字符串可能应该是'(\d+)\\' - AdrianHHH
3个回答

9

自2014-05-11以来,Notepad++提供了一个选项,可以将反斜杠作为SQL转义字符忽略。

取消'Settings'-'Preferences'-'MISC.'-'Treat backslash as escape character for SQL'下的复选框

(在至少v7.7.1中,您需要重新启动np++才能使此更改生效。)


3
我使用的是 Notepad++ 7.8.7 版本,"Treat backslash as escape" 选项已经移到了 设置-首选项-语言 中。 - Ted Striker

1
在Oracle PL/SQL中,我已经更改了转义字符,例如在字符E之后。原文如下:

LIKE 'E\_%' ESCAPE '\' 

目标:

LIKE 'E?_%' ESCAPE '?' 

这可以解决问题。虽然不是完美的解决方案,但如果转义字符的更改可以接受,它就能解决问题。


0

选择语言 > 用户定义,然后选择语言 > S > SQL。

重新加载当前的SQL语言来纠正错误。

敬礼


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接