在记事本++中找到CRLF


316

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

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


只是为了在“ thenonhacker”提到的内容上建立一点基础。我们在工作中使用ULtraEdit-32,并且使用EDI文件(x.12),我们经常不得不包装或拆包数据。2个最常见的搜索和替换字符串是“ ^ p”和“〜”。一种方法将用CR / LF替换“〜”,以便于阅读每个段。反之,则将文件放回EDI转换器所需的格式。对于像我这样的懒人,我只需将它们映射到键即可使用。
DavidGrove 2010年

1
虽然没有关系,但很有帮助。在搜索将Windows中的UNIX文本文件转换为Windows格式的方法后,我访问了此页面。这就是我所做的工作,CTRL+H选择“搜索模式:正则表达式”。“查找内容:$”和“替换为:\ r”。复制将内容粘贴到记事本中或将其保存到光盘中。
大师

2
好极了!Notepad ++ 6.0确实带来了对PCRE的支持:regex像[\r\n]+现在一样工作。我已经更新了答案,并将庆祝!
VonC 2012年

@VonC:我想我也需要更新所有[notepad ++]答案:)
BoltClock

Answers:


412

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

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

天哪,它实际上确实可以正常工作了!!!

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仅-)。

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

“扩展”选项显示\n\r为可以匹配的字符。
与普通搜索模式一样,Notepad ++也在寻找确切的字符。
搜索\r在UNIX格式的文件也不会发现什么,但寻找\n的意志。同样,Macintosh格式的文件将包含,\r但不包含\n

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

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

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

Ctrl+ M将插入与换行符匹配的内容。它们将被替换字符串替换。
我建议此方法是最可靠的方法,除非您确实需要使用正则表达式。
例如,要删除双倍行距文件中的第二个换行符,请在搜索字符串框中输入Ctrl+ M两次,在替换字符串框中输入一次。

使用Regexp进行高级搜索(Ctrl+ R)。

无论是Ctrl+ M$也不\r\n是匹配的。


同一维基还提到了十六进制编辑器的替代方案

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

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


1
我正在运行v 4.7。升级到最新版本,扩展模式按广告中的说明工作。感谢所有回应。
Polara

+1:我正在运行4.6,并且遇到了类似的问题。多亏您的回答,我升级到了5岁以上。谢谢!
paercebal

有用!但这使Notepad ++ RegExp很烂。UltraEdit-32更加智能,您只需要\ n就可以完成工作……
thenonhacker 2010年

\ r \ n为我工作,但不是\ n,如果您是习惯于\ n是\ r \ n的简写的开发人员,这有点违反直觉。
沃伦·P

2
@GarretWilson我确认[^\r]\n工作正常(正则表达式搜索):i.stack.imgur.com/PxZWD.png
VonC

22

看来这是FAQ,提供的解决方法是:

无需正则表达式的简单搜索(Ctrl + H)

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

注1:如果使用鼠标选择它们,则在它们之前开始并拖动到下一行的开始。拖到行尾将不起作用。

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

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

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


2
您也可以使用Ctrl + M在替换字符串中插入换行符。
达斯蒂·坎贝尔

2
这是一个常见问题解答,因为这在本来很棒的产品中有点设计缺陷。
沃伦·P

11

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

然后只需找到“ \ r \ n”(对于unix文件,仅找到\ n;对于Mac格式文件,仅找到\ r),然后将替换设置为所需的值即可。


撰写本文时,这个答案已经过时了-Mac \r自2001年以来就没有使用过...(现在是Unix)
Jasper 2014年

9

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

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

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

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

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

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

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

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

现在,您应该能够根据需要进行计数,查找或替换了。



4

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


1
此页面上少数有效的项目之一。使用notepadd ++ 5.8.6。真的很难相信这种简单的方法需要该线程中给出的过于复杂且常常无法正常工作的答案。
Andrew S

4

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

菜单编辑EOL转换Windows格式


这不包括用一个或多个任意字符替换CRLF的一般情况。或用CRLF替换一个或多个任意字符(例如,用CRLF替换空格字符)。
Peter Mortensen

2

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

编辑:感谢您的反馈,任何人对此表示反对。我了解到...好吧,什么都没有,因为您没有提供任何反馈。为什么会这样呢?


1
我不确定到底为什么它不起作用,但它不起作用。我假设此regex实现(在Notepad ++中)一次只检查一行,而忽略任何换行符。这可能就是您被否决的原因。
坦率的哈德

1
是的 regex在notepad ++中是一行一行的,因此您可以在EOL处将位置与$匹配,但不能搜索/替换跨越行边界的表达式。
沃伦·P

2

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


尝试时,Ctrl + R对我不起作用。它在文档“ DC2”中插入了一个奇怪的控制字符。Notepad ++版本:7.5.6(2018-05-19)。
彼得·莫滕森

2

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

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

2

转到视图->显示符号->显示所有字符//对我有用


1

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


1
这不能回答原始问题。请说明为什么您认为这对此次问答有用。另请阅读帮助中心页面,了解如何做出有用的答案。
AdrianHHH

1

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

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

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

它为我工作。


1

在NP v6.9中,我完全无法做到这一点。我发现在Msoft Word(2K)上足够简单。

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

然后,在搜索框的底部,单击“更多”,然后找到“特殊”按钮,它们将为您提供一些帮助。对于Dos风格,我使用了“段落”。这是Windows环境中的一对。


0

只需使用\ r进行查找,然后在replace字段中将其替换为空白,即可将所有内容增加到一行。然后进行查找并替换(在我的情况下为半冒号)并替换为; \ n

:)-条款与细则


1
这与现有答案有何不同?
所有工人都很重要

0

要将单行的文档更改为单行,而每行在逗号分隔的列表中构成一个条目:

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

这些步骤例如

富吧

巴兹

巴兹富

变成:

foo bar,bar baz,baz foo

或:(取决于偏好)

foo bar,bar baz,baz foo


0

也许您可以使用TextFX插件

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


0

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

\R

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

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

在此处输入图片说明

它匹配:

  • U+000DU+000A -CRLF`序列
  • U+000A- LINE FEED低频
  • U+000B- LINE TABULATIONVT
  • U+000C- FORM FEEDFF
  • U+000D- CARRIAGE RETURNCR
  • U+0085- NEXT LINE内尔
  • U+2028 -- LINE SEPARATOR
  • U+2029 -- PARAGRAPH SEPARATOR
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.