【问题标题】: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++中不起作用,所以我想知道是否还有另一种转义子字符串的能力?

【问题讨论】:

    标签: regex escaping notepad++ scintilla


    【解决方案1】:

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


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

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


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

    【讨论】:

    • 感谢您提供指向文档限制页面的链接。
    • 这不再是真的 - 从版本 6 开始,Notepad++ 支持(使用?)PCRE - perl 兼容的正则表达式库;据我所知,这很快将其从最差的正则表达式支持提升到了一流的支持!
    • 我可以确认。刚从 6.0.0 之前的版本升级到 6.4.5,确实支持子串转义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 2010-09-21
    相关资源
    最近更新 更多