【问题标题】:Notepad++ multiline regexNotepad++ 多行正则表达式
【发布时间】:2012-12-18 13:49:02
【问题描述】:

我有数百个链接类型的文件: http://pastebin.com/fGgLfZf8

但我想删除所有占用多于一行的 cmets 例如。

<!--- MPU ---> 

应该保持不变,而

<!--
************
blablabla
************
-->

应该被删除。

我知道 Notepad++ 功能不仅可以通过正则表达式查找文档,而且我正在尝试使用它,但我遇到了一些困难。 首先,我正在尝试这个正则表达式:

<\!\-\-(.*?)\-\->

在此处测试:http://www.regextester.com/ 至少部分有效(因为它突出显示了在线制作的 cmets) 但是,如果我在 Notepad++ 上复制并粘贴此正则表达式,它将仅匹配单行 cmets =\

有人知道如何在 Notepad++ 中做到这一点吗?

【问题讨论】:

    标签: regex notepad++


    【解决方案1】:

    在“搜索模式”中的“正则表达式”选项旁边有一个“匹配换行符”复选框(根据@glatapoui 应该注意,这仅适用于 Notepad++ v6,不适用于以前的版本)。

    【讨论】:

    • 哇,写&lt;\!\-\-(.*?)\-\-&gt; 并选择那个似乎真的有效!谢谢你。现在我只需要找出如何排除单线的
    【解决方案2】:

    此表达式&lt;!--.+?(?&lt;=[\*\r\n])--&gt; 也仅在 Notepad++ 中匹配多行 cmets。

    【讨论】:

      【解决方案3】:

      捕获多行文本的另一种方法是使用表达式:

      <!---([\S\s]+?)--->
      

      \S+ 匹配所有无空格符号,
      \s+ 匹配所有空格符号(包括 \r \n \t)。

      它可能适用于记事本++,否则也适用...

      编辑: 乍一看,我没有注意到问题是只捕获和删除多行 cmets,不包括单行 cmets。 我找到了两次迭代的方法。 首先,我们需要查找并替换文本后面的任何内容

      <!—-(?:(?!.*—->)[\s\S]+?—->|)
      

      这将捕获所有多行 cmets 和单行 cmets 的前缀。 那么我们需要的是带回我们丢失的单行前缀:

      Find:
      (.+—->)
      
      Replace:
      <!—-\1
      

      它将修复单线 cmets。 “--->”的组合不能出现xml代码否则注释结束。

      【讨论】:

      • 这也将匹配没有换行符的行。
      • @Toto,我第一次没有注意到。现在我提出另一种两种替换的方法。
      【解决方案4】:

      &lt;!--[*a-zA-Z\r\n]*--&gt;

      这个好像只取notepad++中的多行cmets

      编辑: 小错误:空格是这个问题。 你可以试试 &lt;!--[\r\n]{1}[* a-zA-Z\r\n]*--&gt;

      【讨论】:

      • 它们都不适合我 =\ 它们在您的 Notepad++ 中工作吗?
      • 是的,他们和我一起工作。在记事本++和Regextester中也是如此。你能在评论的第一个换行符之前留一些空格吗?
      【解决方案5】:

      如果是单个文档,一个简单的技巧就是将行尾转换为 Unix。

      菜单:[Edit] -&gt; [EOL Conversion] -&gt; [Unix]

      然后只需使用简单的 \n 来检测表达式中的换行符。

      这样您就不必更改从某些在线正则表达式构建器构造/复制的表达式。

      注意:不要忘记将行尾切换回 Windows,以防万一。

      【讨论】:

      • 这是如何回答问题的?
      • 我知道这个问题是关于“多个”文档的,我的提示对这个特定情况没有帮助。但是我虽然它可以帮助其他解决这个问题的人,因为他们需要找到如何在 NP++ 中处理多行搜索,而无需更改每个构建的搜索表达式,该表达式依赖于 \n 换行或设置 ' 。在搜索对话框中包含换行符。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      • 2012-04-01
      • 2017-02-08
      • 1970-01-01
      • 2023-02-04
      • 1970-01-01
      相关资源
      最近更新 更多