【问题标题】:Find CRLF in Notepad++在记事本++中查找CRLF
【发布时间】:2008-09-25 15:24:27
【问题描述】:

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

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

【问题讨论】:

  • 只是在“thenonhacker”提到的内容基础上再做一点。我们在工作中使用 ULtraEdit-32,在处理 EDI 文件 (x.12) 时,我们经常需要打包或解包数据。两个最常见的搜索和替换字符串是“^p”和“~”。采用一种方式将用 CR/LF 替换“~”,以便于阅读每个段。换一种方式将文件恢复为 EDI 翻译器所需的格式。对于像我这样的懒惰的人,我只是将那些映射到键以方便使用。
  • 虽然不相关,但很有帮助。在 Windows 中搜索将 UNIX 文本文件转换为 Windows 格式的方法后,我访问了此页面。这就是我所做和工作的,CTRL+H,选择“搜索模式:正则表达式”。 “查找内容:$”和“替换为:\r”。将内容复制粘贴到记事本中或保存到光盘中。
  • 耶! Notepad++6.0 确实带来了 PCRE 的支持:像[\r\n]+ 这样的正则表达式现在可以工作了。我已经更新了我的答案,我会庆祝的!
  • @VonC:我想我也需要更新all my [notepad++] answers :)

标签: regex notepad++


【解决方案1】:

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

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

天哪,它现在确实有效!!!


原始答案 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 文章:
How To Replace Line Ends, thus changing the line layout”。
georgiecasey 在他/她的answer below 中提到)

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

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

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

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

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

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

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

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

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

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

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

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


同一个 wiki 还提到了 十六进制编辑器替代方案

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

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

【讨论】:

  • 我运行的是 v 4.7。升级到最新版本和扩展模式如宣传的那样工作。感谢所有回复的人。
  • +1:我运行的是 4.6,遇到了类似的问题。多亏了你的回答,我升级到了 5+。谢谢!
  • 有效!但这使得 Notepad++ RegExp 很糟糕。 UltraEdit-32 更智能,你只需要 \n 就完成了你的工作......
  • \r\n 为我工作,但不是 \n,如果你是一个习惯 \n 是 \r\n 的简写的开发人员,这有点违反直觉。跨度>
  • @GarretWilson 我确认[^\r]\n 工作正常(正则表达式搜索):i.stack.imgur.com/PxZWD.png
【解决方案2】:

看来这是FAQ,提供的分辨率是:

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

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

注意 1:如果您使用 鼠标,在它们之前开始并拖动 到下一行的开头。 拖到行尾不会 工作。

注意2:不能复制粘贴 他们自己进入现场。

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

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

【讨论】:

  • 您也可以使用 Ctrl+M 在替换字符串中插入换行符。
  • 这是一个常见问题解答,因为这在其他出色的产品中有点设计缺陷。
【解决方案3】:

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

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

【讨论】:

  • 这个答案在编写时已经过时 - Mac 从 2001 年起就没有使用过\r ...(现在是 unix)
【解决方案4】:

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

但是,这在 Notepad++ v4.1.2 中有效:

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

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

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

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

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

  6. 确保“正则表达式”选项处于关闭状态。

现在您应该可以根据需要进行计数、查找或替换了。

【讨论】:

    【解决方案5】:

    带有 CRLF 的图像


    没有 CRLF 的图像

    【讨论】:

    • 别名菜单编辑显示符号显示行尾.
    【解决方案6】:

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

    【讨论】:

    • 此页面上为数不多的有效项目之一。使用记事本++ 5.8.6。真的很难相信这么简单的事情应该需要在这个线程中给出的过于复杂且通常不起作用的答案。
    【解决方案7】:

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

    菜单编辑EOL 转换Windows 格式

    【讨论】:

    • 这不包括用一个或多个任意字符替换 CRLF 的一般情况。或者用 CRLF 替换一个或多个任意字符(比如用 CRLF 替换空格字符)。
    【解决方案8】:

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

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

    【讨论】:

    • 我不确定为什么它不起作用,但它不起作用。我假设这个正则表达式实现(在 Notepad++ 中)一次只检查一行并忽略任何换行符。这可能就是你被否决的原因。
    • 是的。正则表达式在 notepad++ 中是逐行的,因此您可以在 EOL 处使用 $ 进行位置匹配,但不能搜索/替换跨行边界的表达式。
    【解决方案9】:

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

    【讨论】:

    • Ctrl + R 在我尝试时对我不起作用。它在文档中插入了一个奇怪的控制字符“DC2”。 Notepad++ 版本:7.5.6 (2018-05-19)。
    【解决方案10】:

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

    1. 用标签替换所有\r\n,比如说#GO# → 检查“扩展”,用#GO# 替换\r\n
    2. 执行您的正则表达式,例如从 html 书签中删除多行 ICON="*" → 检查正则表达式,替换 ICON=.[^"]+.> by >
    3. 放回 \r\n → 检查“扩展”,将 #GO# 替换为 \r\n

    【讨论】:

      【解决方案11】:

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

      【讨论】:

        【解决方案12】:

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

        【讨论】:

        • 这没有回答原始问题。请解释为什么您认为这是对本问答的有用贡献。另请阅读help center 页面,了解如何获得有用的答案。
        【解决方案13】:

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

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

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

        它对我有用。

        【讨论】:

          【解决方案14】:

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

          打开文档,进入编辑->替换。

          然后在搜索框的底部,单击“更多”,然后找到“特殊”按钮,他们为您提供了几项内容。对于 Dos 风格,我使用了“段落”之一。这是 windows 领域中的 cr lf 对。

          【讨论】:

            【解决方案15】:

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

            \R
            

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

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

            匹配:

            • U+000DU+000A -CRLF`序列
            • U+000A - LINE FEED, LF
            • U+000B - LINE TABULATIONVT
            • U+000C - FORM FEED, FF
            • U+000D - CARRIAGE RETURN, CR
            • U+0085 - NEXT LINE, NEL
            • U+2028 - LINE SEPARATOR
            • U+2029 - PARAGRAPH SEPARATOR

            【讨论】:

              【解决方案16】:

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

              :) -条款和条件

              【讨论】:

              • 这与现有答案有何不同?
              【解决方案17】:

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

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

              这些步骤转例如

              富吧

              巴兹

              呸呸呸

              进入:

              foo bar,bar baz,baz foo

              或:(取决于偏好)

              foo bar, bar baz, baz foo

              【讨论】:

                【解决方案18】:

                也许你可以使用 TextFX 插件

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

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2022-01-15
                  • 2013-08-20
                  • 2013-03-06
                  • 2016-07-01
                  • 1970-01-01
                  • 2013-11-23
                  • 2021-12-11
                  相关资源
                  最近更新 更多