notepad++ 正则表达式引擎 (scintilla) 是不是支持子字符串转义(smth. like "\Q.*[escaped string]()+\E")?

Posted

技术标签:

【中文标题】notepad++ 正则表达式引擎 (scintilla) 是不是支持子字符串转义(smth. like "\\Q.*[escaped string]()+\\E")?【英文标题】:Does notepad++ regular expressions engine (scintilla) support substring escaping (smth. like "\Q.*[escaped string]()+\E")?notepad++ 正则表达式引擎 (scintilla) 是否支持子字符串转义(smth. like "\Q.*[escaped string]()+\E")? 【发布时间】:2011-01-27 10:48:57 【问题描述】:

主题

我的意思是我不想将几十个“\”粘贴到搜索模式中。明显的方法是使用一对 perl 风格的特殊字符:

\Q -- 引用(禁用)模式元字符直到 \E \E -- 结束大小写修改

例子:\Qtext 此处被转义为 ".*[]+" 符号没有特殊含义\E。

我发现,\Q...\E 在notepad++中不起作用,所以我想知道是否还有另一种转义子字符串的能力?

【问题讨论】:

【参考方案1】:

现在 Scintilla 使用 PCRE,这意味着您可以使用 \Q\E。下面的旧答案,因为我觉得有趣的是,历史上旧的“正则表达式”甚至都不是常规的;)


没有。 Scintilla 仅支持极少的正则表达式语法。 The documentation 甚至会突出显示更多不受支持的正则表达式部分1

我会说你应该得到一个像样的编辑器或用其他工具替换:-)


1 这甚至包括替换 (|),如果我没记错的话,这会将这些正则表达式的功能(即使它们支持匹配中的反向引用)限制为常规语言。例如,我不认为语言 ab, bc 可以表示,尽管它显然是常规的。

【讨论】:

感谢您提供指向文档限制页面的链接。 这不再是真的 - 从版本 6 开始,Notepad++ 支持(使用?)PCRE - perl 兼容的正则表达式库;据我所知,这很快将其从最差的正则表达式支持提升到了一流的支持! 我可以确认。刚从 6.0.0 之前的版本升级到 6.4.5,确实支持子串转义。

以上是关于notepad++ 正则表达式引擎 (scintilla) 是不是支持子字符串转义(smth. like "\Q.*[escaped string]()+\E")?的主要内容,如果未能解决你的问题,请参考以下文章

怎么使用正则表达式表示汉字,目的是要在notepad++筛选出所有汉字,编码格式为ANSI

notepad正则怎么替换其中一部分

Notepad++ 非贪婪正则表达式

在 Notepad++ 中用 \t 替换正则表达式

Notepad++ 利用正则表达式删除关键词所在行

Notepad++ 正则表达式替换 - \1 不起作用?