【问题标题】:Removing empty lines in Notepad++删除 Notepad++ 中的空行
【发布时间】:2011-04-21 10:19:41
【问题描述】:

如何替换 Notepad++ 中的空行?我尝试用查找中的空行进行查找和替换,替换中没有任何内容,但它不起作用;它可能需要正则表达式。

【问题讨论】:

    标签: regex notepad++


    【解决方案1】:

    此模式已在 Notepad++ v8.1.1 中测试

    它替换每行文本前后的所有spaces/tabs/blank lines

    它不应该与文本中间的任何东西混淆。

    Find: ^(\s|\t)+|(\s|\t)+$
    
    Replace: leave this blank
    
    
    Before:
    _____________________________________
    \tWORD\r\n
    \r\n
    \tWORD\s\tWORD\s\t\r\n
    \r\n
    \r\n
    WORD\s\s\tWORD\t\sWORD\s\r\n 
    \t\r\n
    \s\s\s\r\n
    WORD\s\sWORD\s\s\t\r\n
    
    ____________________________________
    
    
    After:
    _____________________________________
    WORD\r\n
    WORD\s\tWORD\r\n
    WORD\s\s\tWORD\t\sWORD\r\n
    WORD\s\sWORD
    _____________________________________
    

    【讨论】:

      【解决方案2】:

      1) Ctrl + H(或Search ? Replace..)打开替换窗口。

      2) 选择'Search Mode''正则表达式'

      3) 在 “查找内容” 中输入 ^(\s*)(.*)(\s*)$ 并在 “替换为” 中输入 \2

      • ^ - 匹配行首字符
      • (\s*) - 匹配空格字符
      • (.*) - 匹配任何字符
      • (\s*) - 匹配空格字符
      • $ - 匹配行尾字符
      • \2 - 表示第二个括号的匹配项

      有关正则表达式的更多信息,请参阅 https://www.rexegg.com/regex-quickstart.html

      【讨论】:

      • 请注意:这不仅会替换空行,还会替换例如缩进(制表符和空格)以及
      【解决方案3】:

      您可以按照以下屏幕截图所示的技术进行操作:

      • 查找内容: ^\r\n
      • 替换为: keep this empty
      • 搜索模式: Regular expression
      • 环绕:已选择

      注意: *nix 文件只能由\n找到

      【讨论】:

      • 效果很好(注意:不适用于包含任何非打印字符(如空格或制表符)的行)
      • 喜欢它!这应该是公认的答案。
      【解决方案4】:

      这对我有用:

      SEARCH:^\r  
      REPLACE:            (empty)
      

      【讨论】:

      • 这不适用于 linux eol \n 和 windows eol \r\n
      【解决方案5】:

      你需要一个正则表达式之类的东西。

      您必须处于Extended 模式

      如果您希望所有行都以单行结束,请使用\r\n。如果您只想删除 empty 行,请按照 @Link 最初的建议使用 \n\r

      将任一表达式替换为空。

      【讨论】:

      • 在搜索模式下应该先选择“扩展”。
      • 要使您的行不被连接在一起,您必须搜索 \r\n\r\n 并替换为 \r\n
      • 见下面@BoltClock 的评论。此外,如果您的文件以 Unix 行结尾保存,您可以在执行查找和替换之前在 Edit > EOL Conversion > Windows Format 中将其转换为 Windows 行结尾。
      • 如果您希望删除只有空格和制表符的行或什么都没有,请尝试使用正则表达式替换匹配\r\n\W*\r\n 并替换为\r\n
      • @ST3 嗯我在想什么,这个更好:(\r\n|\r|\n)(\s*(\r\n|\r|\n))+ 并替换为\r\n 在这里查看它的实际操作:regex101.com/r/qD9dB1/1
      【解决方案6】:
      1. ctrl + h(替换快捷键)。
      2. 查找内容区域中,输入^\R(用于精确的空行)或^\h*\R(仅用于带有空格的空行)。
      3. 替换为区域
      4. 选中环绕选项。
      5. 选择正则表达式搜索模式。
      6. 点击全部替换按钮。

      【讨论】:

      • 这对我有用,没有任何问题或需要更改其他设置。谢谢!
      • 除了短一点,和SleepyBoBos's answer到底有什么区别?
      • @Albin,不同的正则表达式: SleepyBoBos: ^[ \t]*$\r?\n 这将匹配所有以空格开头并以回车符结尾的行(在本例中为 windows crlf)我的版本:^\R(用于精确的空行)或 ^\h*\R(仅用于带空格的空行)。
      • @Alex.K.我明白了,因为答案本身已经提到了。抱歉,应该更具体一点:除了\h 中的空格和制表符之外,空格中还有其他内容吗?还有\r?\n已经包含了Win和Unix的换行符,使用\R有什么好处呢?是否有您需要它的“常规”用例?
      【解决方案7】:

      从 6.5.2 版开始,现在有一种内置方法可以做到这一点

      Edit -> Line Operations -> Remove Empty LinesRemove Empty Lines (Containing Blank characters)

      【讨论】:

      • 很遗憾,这没有考虑您的选择,即使您只选择了其中的一部分,它也会删除文件中的所有空行。
      • 如果这是一次性操作,您可以将选定的行提取到新的记事本++ 选项卡并在那里执行该操作。复制粘贴过程 5 秒。在我看来,当时无法完成的任何其他解决方法都是浪费。但如果你每天都这样做 100 次......
      • 我正在使用这个(甚至分配了我的快捷方式),但它比上面的选项慢很多,所以要巧妙地使用......
      【解决方案8】:

      我没有看到组合的答案,所以搜索 ^\s+$ 并替换为 {nothing}

      ^\s+$ means
        ^ start of line
        \s+ Matches minimum one whitespace character (spaces, tabs, line breaks)
        $ until end of line
      

      【讨论】:

      • 如果你想要多行,你可以尝试:^\s+^(\S) 并替换为\1
      【解决方案9】:

      这对我有用:

      1. ctrl + h(替换快捷方式)
      2. find what 框中写入以下正则表达式之一。 [\n\r]+$^[\n\r]+
      3. Replace with 框留空
      4. Search Mode 中,选择Regex
      5. 点击Replace All

        完成!

      【讨论】:

      • 这是唯一没有搞砸我巨大的 .csv 文件的解决方案。谢谢!
      • 加一,因为我终于知道替换的快捷方式:-D
      【解决方案10】:

      /n/r 采用特定类型的换行符。要定位任何空白行,您还可以使用:

      ^$
      

      这说 - 任何开始和结束之间没有任何内容的行。这更像是一个包罗万象的东西。替换为相同的空字符串。

      【讨论】:

        【解决方案11】:

        有时 \n\r 等不起作用,在这里弄清楚你的实际正则表达式应该是什么。

        这个技巧的好处:如果你想一次替换多个文件,你必须使用这个方法。以上行不通...

        【讨论】:

          【解决方案12】:
          1. 记事本++
          2. Ctrl-H
          3. 选择正则表达式
          4. 在查找内容中输入^[ \t]*$\r?\n,将替换留空。这将匹配所有以空格开头并以回车符结尾的行(在本例中为 windows crlf)
          5. 单击“查找下一个”按钮,亲自查看它如何仅匹配空行。

          【讨论】:

          • 我不得不使用这种方法而不是其他一些方法来让它在宏中轻松工作。谢谢。
          • 由于多个空行而需要的更短和更少的替换将被一次替换:^\s*$\r?\n
          • 在记事本++中,我在查找框中使用了(^[ \t]*$\s)\s*,并将替换为空。效果很好。谢谢!
          • 为什么^\s*$ 对多行有效? ^$ 不应该将其“限制”为一行吗? (@njank 或其他任何人)
          • 感谢这个正则表达式,它运行良好,但完成执行需要一段时间。
          【解决方案13】:

          您可以搜索以下正则表达式:^(?:[\t ]*(?:\r?\n|\r))+ 并将其替换为空字段

          【讨论】:

            【解决方案14】:

            上面的一些表达式和扩展表达式对我不起作用,但是正则表达式“$\n$”可以。

            【讨论】:

              【解决方案15】:

              CTRL+A,选择 TextFX 菜单 -> TextFX Edit -> Delete Blank Lines as described above works.

              但是如果行包含一些空格,则将光标移动到该行并执行 CTRL + H。“查找内容:”秒将显示空格,在“替换为”部分中,将其留空。 现在所有的空格都被删除了,现在尝试 CTRL+A,选择 TextFX 菜单 -> TextFX 编辑 -> 删除空白行

              【讨论】:

                【解决方案16】:
                1. 编辑 >> 空白操作 >> 修剪前导和尾随空格(删除空行中的黑色制表符和空格)
                2. Ctrl + H 获取替换窗口并替换模式:^\r\n with nothing (选择正则表达式)

                注意:第 1 步将删除您通过制表符和空格完成的代码意图

                【讨论】:

                  【解决方案17】:

                  从空行中删除空格的简单替代方法:

                  1. TextFX>TextFX 编辑> 修剪尾随空格

                  这将删除所有尾随空格,包括空行中的尾随空格。 确保没有尾随空格很重要。

                  【讨论】:

                    【解决方案18】:

                    如果空白行包含制表符或空格,这显然不起作用。由于 HTML 编辑器故障,许多网页(例如 http://www.guardian.co.uk/)包含这些白线。

                    使用正则表达式删除空格,如下所示:

                    改变模式:[\t]+$ 一无所有。

                    其中 [\t] 匹配制表符或空格。 '+' 匹配一个或多个匹配项,'$' 标记行尾。

                    然后使用 notepad++/textFX 删除单个或多余的空行。 确保这些空行在给定上下文中不重要。

                    【讨论】:

                      【解决方案19】:

                      有一个插件可以添加一个名为TextFX 的菜单。这个菜单包含一系列令人眼花缭乱的快速文本编辑选项,使人们能够快速更改编码。在此菜单中,您可以找到诸如 Drop Quotes、Delete Blank Lines 以及 Unwrap and Rewrap Text 等选项

                      执行以下操作:

                      TextFX > TextFX Edit > Delete Blank Lines
                      TextFX > TextFX Edit > Delete Surplus Blank Lines
                      

                      【讨论】:

                      • 不确定是什么时候,但现在似乎默认安装了这个插件。有点离题,但TextFX > TextFX Tools 下的其他非常有用的功能之一是行排序,可以选择删除重复项。在没有 cygwin 或 unxutils 或类似工具的 Windows 机器上执行 Unix sort -u 的非常方便的方法。
                      • Here's a link to the TextFx Plugin. 我发现它非常有用。使用:Settings > Import > plugin...,找到dll文件进行安装。它成为Plugins的菜单项
                      • 这适用于所有打开的文档,还是一次一个文档?
                      【解决方案20】:

                      Ctrl+H。

                      查找 - \r\r 替换为 - \r.

                      【讨论】:

                      • 这对我有用,删除多余的行,在查找双 \r 替换为单 \r 的意义上。谢谢!!
                      • 这很好用,但是我发现我需要在我的文档中运行它几次,然后所有 \r\r 实例都消失了。我不确定为什么。
                      【解决方案21】:

                      好吧,我不确定正则表达式或您的情况..

                      CTRL+A 怎么样,选择 TextFX 菜单 -> TextFX 编辑 -> 删除空白行,中提琴所有空白行都消失了。

                      附注 - 如果该行是空白的,即不包含空格,这将起作用

                      【讨论】:

                        【解决方案22】:

                        在 notepad++ 中按 CTRL+H ,在搜索模式下单击“扩展 (\n, \r, \t ...)”单选按钮,然后在“查找内容”框中键入:\r\n(短对于 CR LF)并将“替换为”框留空..

                        最后点击全部替换

                        【讨论】:

                        • 实际上,我试过了,请参阅我的回答中的说明。 你在做某事!
                        • 这假定行尾是 Windows (CRLF),但如果您的文件使用 Unix 行尾保存,则仅搜索 \n
                        • @Brad:我写在 ()“CR LF 的缩写”之间,不想让 codetrek 认为 \n 是 CR,因此进行了编辑。
                        • 错误答案,将所有行放在一行中。
                        猜你喜欢
                        • 1970-01-01
                        • 2023-03-25
                        • 1970-01-01
                        • 2012-12-25
                        • 2010-10-29
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        相关资源
                        最近更新 更多