332

如何在 Notepad++ 中查找/替换所有 CR/LF 字符?

我正在寻找与 Microsoft Word 中的 ^p 特殊字符等效的内容。

4

18 回答 18

426

[\r\n]+也应该工作

2012 年 3 月 26 日更新,Notepad++ 6.0的发布日期:

OMG,它现在确实有效!

Notepad++ 中的 PCRE 正则表达式


原始答案 2008 (Notepad++ 4.x) - 2009-2010-2011 (Notepad++ 5.x)

实际上不,它似乎不适用于正则表达式......

但如果你有 Notepad++ 5.x,你可以使用“扩展”搜索模式并查找\r\n. 那确实找到了你所有的CRLF.

(我意识到这与其他答案相同,但同样,“扩展模式”仅适用于 Notepad++ 4.9、5.x 等)


自 2009 年 4 月以来,您在 Notepad++ 站点上有一篇关于此主题的 wiki 文章:
如何替换行尾,从而更改行布局”。
georgiecasey在下面的回答中提到)

一些相关的摘录包括以下搜索过程:

简单搜索(Ctrl+ F),搜索模式=Normal

您可以EOL在编辑窗口中选择一个。

  • 只需将光标移动到行尾,然后键入Shift+Right箭头。
  • 或者,要EOL使用鼠标选择,从行尾开始并拖动到下一行的开头;拖动到右侧EOL将不起作用。您可以手动复制并将EOL其粘贴到 Unix 文件的字段中(LF-only)。

简单搜索 (Ctrl+F),搜索模式 = 扩展

“扩展”选项显示\n\r作为可以匹配的字符。
与普通搜索模式一样,Notepad++ 正在寻找确切的字符。
在 UNIX 格式的文件中搜索\r不会找到任何东西,但搜索\n会。同样,Macintosh 格式的文件将包含\r但不包含\n.

简单搜索 (Ctrl+F),搜索模式 = 正则表达式

正则表达式使用字符^并将$匹配字符串锚定到行的开头或结尾。例如,搜索return;$将找到“return;”的出现。在同一行上没有后续文本的情况下发生。锚字符在所有文件格式中的作用相同。
这 '。' 点元字符与行尾不匹配。

[在 Notepad++ 5.8.5 中测试]:带有显式\r\n不工作的正则表达式搜索(与Scintilla 文档相反)
也不会搜索显式(粘贴的)LF 或选择 EOL 时放置在字段中的(不可见)EOL 字符。不带正则表达式的高级搜索 ( Ctrl+ )R

Ctrl+M将插入与换行符匹配的内容。它们将被替换字符串替换。
我推荐这种方法是最可靠的,除非你真的需要使用正则表达式。
例如,要删除双倍行距文件中的每隔一个换行符,请在搜索字符串框中输入Ctrl+M两次,并在替换字符串框中输入一次。

使用正则表达式的高级搜索 ( Ctrl+ R)。

Ctrl+M和都不$匹配\r\n


同一个 wiki 还提到了Hex 编辑器替代方案

  • 在文档的开头键入新字符串。
  • 然后选择以十六进制模式查看文档
  • 选择新行之一并点击Ctrl+ H
  • 当您打开“替换”对话框时,在背景上选择新的替换字符串并Ctrl+C复制它以将其粘贴到“替换为文本”输入中。
  • 然后根据需要替换或全部替换。

注意:为换行选择的字符通常显示为0a.
如果文件是 Windows 格式,它可能有不同的值。在这种情况下,您可以随时前往Edit -> EOL Conversion -> Convert to Unix Format,并在更换后将其切换回 和Edit -> EOL Conversion -> Convert to Windows Format

于 2008-09-25T15:27:07.897 回答
23

看来这是一个常见问题解答,提供的解决方案是:

没有正则表达式的简单搜索 (Ctrl+H)

您可以打开查看/显示行尾或查看/显示全部,然后选择现在可见的换行符。然后,当您启动命令时,一些与换行符匹配的字符将被粘贴到搜索字段中。与正则表达式模式不同,匹配项将被替换字符串替换。

注意 1:如果您使用鼠标选择它们,请从它们之前开始并拖动到下一行的开头。拖到行尾是行不通的。

注意 2:您不能自己将它们复制并粘贴到该字段中。

不带正则表达式的高级搜索 (Ctrl+R)

Ctrl+M 将插入与换行符匹配的内容。它们将被替换字符串替换。

于 2008-10-08T17:40:18.700 回答
11

在“替换”对话框中,您要将搜索模式设置为“扩展”。正常或正则表达式模式将不起作用。

然后只需找到“\r\n”(或者对于 unix 文件或者对于 mac 格式文件只查找 \n),并将替换设置为您想要的任何内容。

于 2008-09-25T15:31:33.987 回答
9

我对查找/替换窗口中的 \r\n 正则表达式不太满意。

但是,这适用于 Notepad++ v4.1.2:

  1. 使用“查看|显示行尾”菜单启用行尾字符的显示。(回车换行应显示为单个阴影 CRLF“字符”。)

  2. 选择一个 CRLF '字符'(将光标放在一个字符的前面,按住 SHIFT 键,然后按一次 RIGHT CURSOR 键)。

  3. 将 CRLF 字符复制到剪贴板。

  4. 确保您没有打开查找或查找/替换对话框。

  5. 打开查找/替换对话框。“查找内容”字段显示剪贴板的内容:在这种情况下,CRLF 字符 - 显示为 2 个“框字符”(可能是不可打印的字符?)

  6. 确保“正则表达式”选项为 OFF。

现在您应该能够根据需要计算、查找或替换。

于 2008-09-25T15:53:27.507 回答
6

带有 CRLF 的图像

在此处输入图像描述


没有 CRLF 的图像

在此处输入图像描述

于 2016-03-28T06:06:18.577 回答
4

我发现它的工作方式是使用“替换”功能,并使用“\n”和“扩展”模式。我正在使用版本 5.8.5。

于 2010-12-01T16:43:21.493 回答
4

在 2013,v6.13 或更高版本中,使用:

菜单编辑EOL 转换Windows 格式

于 2013-05-26T21:28:58.053 回答
2

假设它具有“正则表达式”搜索,请查找 \r\n。我更喜欢 \r?\n,因为有些文件不使用回车。

编辑:感谢您的反馈,无论是谁投了反对票。我了解到...好吧,什么都没有,因为您没有提供任何反馈。为什么这是错误的?

于 2008-09-25T15:26:01.443 回答
2

使用高级搜索选项 ( Ctrl+ R) 并使用 CRLF ( Ctrl+ M) 的键盘快捷键插入回车。

于 2008-09-25T16:48:46.593 回答
2

如果您需要进行复杂的正则表达式替换,包括 \r\n,您可以通过三步方法解决限制:

  1. 全部替换\r\n为标签,比如说#GO#→检查“扩展”,替换\r\n#GO#
  2. 执行您的正则表达式,例如ICON="*"从 html 书签中删除多行 → 检查正则表达式,替换ICON=.[^"]+.> by >
  3. 放回 \r\n → 检查“扩展”,替换#GO#\r\n
于 2012-03-27T07:34:34.583 回答
2

转到查看->显示符号->显示所有字符//它对我有用

于 2019-01-29T06:54:03.543 回答
1

我在记事本++中打开了文件,并在几个步骤中进行了替换:

  1. 将所有“\r\n”替换为“\r\n”
  2. 将所有“; \r\n”替换为“\r\n”
  3. 将所有“\r\n”替换为“”

这会将所有中断放在应有的位置,并删除那些破坏文件的中断。

它对我有用。

于 2013-04-11T12:45:54.177 回答
1

进行此设置。菜单->查看->显示符号->取消选中显示行尾

于 2017-03-20T13:06:15.320 回答
1

我在 NP v6.9 中完全无法做到这一点。我发现在 Msoft Word (2K) 上很容易。

打开文档,转到编辑->替换。

然后在搜索框的底部,单击“更多”,然后找到“特殊”按钮,他们为您提供了一些东西。对于 Dos 样式,我使用了“段落”之一。这是 Windows 中的 cr lf 对。

于 2019-01-19T00:40:48.670 回答
1

要查找任何类型的换行符序列,请使用以下正则表达式构造:

\R

要查找并选择连续的换行符序列,请在:+之后添加。\R\R+

确保打开正则表达式模式:

在此处输入图像描述

它匹配:

  • U+000DU+000A -CRLF`序列
  • U+000A- LINE FEED,低频
  • U+000B- LINE TABULATION, VT
  • U+000C- FORM FEED,法郎
  • U+000D- CARRIAGE RETURN, CR
  • U+0085- NEXT LINE, NEL
  • U+2028-LINE SEPARATOR
  • U+2029-PARAGRAPH SEPARATOR
于 2019-10-10T07:45:13.053 回答
0

要将包含不同行的文档更改为单行,每行在逗号分隔列表中形成一个条目:

  1. ctrl+f打开搜索/替换器。
  2. 单击“替换”选项卡。
  3. 用“”填写“查找内容”条目\r\n
  4. ,用“ ”或“ ”填写“替换为”条目, (取决于偏好)。
  5. 取消选中“匹配整个单词”复选框(避开逻辑的重要部分)。
  6. 选中“扩展”单选按钮。
  7. 单击“全部替换”按钮。

这些步骤变成例如

富吧

巴兹

巴兹富

进入:

foo bar,bar baz,baz foo

或:(取决于偏好)

foo bar, bar baz, baz foo

于 2012-02-27T17:46:07.827 回答
0

也许你可以使用 TextFX 插件

在 TextFX 中,转到 textfx 编辑 → 删除空白行

于 2013-05-22T08:15:57.400 回答
0

只需在替换字段中进行查找并替换为空白的 \r,以便所有内容都上升到一行。然后进行查找和替换(在我的情况下是分号)并替换为 ;\n

:) -T&C

于 2016-07-21T19:26:24.820 回答