Notepad++ 换行符正则表达式问题

3

可能是重复问题:
在Notepad++中查找CRLF

我试图使用notepad++进行一些简单的正则表达式查找和替换。但是当我尝试使用新行的正则表达式语法(\r\n)时,我会得到以下错误:

找不到文本:“\r\n”

\r\n 在“扩展”搜索和其他文本编辑器中有效,但在正则表达式搜索中无效。

有什么想法吗?


尝试使用[\r\n]+代替?将它们放在一个类中可以确保它们匹配(以任何顺序),但是连续出现。 (或者,您可以使用[\r\n]{1,2}来查找单个返回实例。) - Brad Christie
@bazmegakapa 你是对的,我之前没看到是因为他们用了 CRLF 而不是 \r\n。 - chris
3个回答

5

Notepad++的正则表达式引擎不支持多行,因此无法匹配换行符。如果你需要查找和替换空白行,你需要使用扩展搜索。但从Notepad++ 6.0开始,这已经不再是真实情况了。现在它使用PCRE作为其正则表达式引擎并允许多行替换。有关更多信息,请参见重复问题的被接受的答案


根据2008年6月的一篇帖子,正则表达式引擎似乎承认\r\n(以及其他包括\t\b等)。--编辑:还发现这篇帖子提到在模式字段中使用ctrl+Q,ctrl+J插入新行。 - Brad Christie
@Brad Christie,有3种搜索模式:普通、扩展和正则表达式。普通模式是普通的,扩展模式允许换行符、制表符和其他一些选择器,而正则表达式模式则允许进行有限的正则表达式搜索。 - zzzzBov
@Brad Christie: 我从没让它工作过。关于你的编辑,那不是针对emacs吗? - BoltClock
@zzzzBov:啊,可能是这个不同,需要使用扩展版。 @BoltClock:尝试使用ctrl+Q,ctrl+J。我很好奇这是否有效。 - Brad Christie
它有一个“emac等效物”,所以我认为它适用于两者。我可能是错的(我个人使用notepad2而不是notepad ++,所以(不幸的是)我无法测试,因此我不会发布任何答案)。 - Brad Christie

4

来自Notepad++帮助文件:

由于Notepad++使用Scintilla正则表达式引擎,因此与SciTE相同,因此可以在此处找到完整的正则表达式选项列表(不同之处在于POSIX模式始终开启,这不是一个选项):http://www.scintilla.org/SciTERegEx.html


来自SciTE文档:

请注意,\r和\n永远不匹配,因为在Scintilla中,正则表达式搜索是逐行进行的(已剥离行末字符)。


如果是这种情况,有没有人知道支持正则表达式和行尾字符的好用免费文本编辑器适用于Windows系统? - chris
从版本7开始,EditPad Lite现在具有正则表达式搜索和替换功能。我已经使用EditPad Pro几年了,它拥有我见过的最好的编辑器正则表达式支持。 - Alan Moore

2

从Notepad++的原始替换选项中,"扩展"模式支持\r\n,因此您可以将每个换行符替换为一个在您的文档中从未出现过的唯一短字符串,例如abcdefg,以生成一个巨大的单行字符串。然后,在"正则表达式"模式下进行您的正则表达式替换工作,尽量保留唯一标记字符串,使用"扩展"模式将\r\n替换回来,完成,虽然不方便,但是可行。


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