【问题标题】:Regex to find duplicate characters ignoring line breaks (Notepad++)正则表达式查找重复字符忽略换行符(记事本++)
【发布时间】:2018-09-23 12:59:13
【问题描述】:

我用表达方式

(.)\1+

使用 Notepad++ 查找文本文件中的重复字符。

但是,此表达式不适用于跨两行的重复字符:

abc
cba

忽略换行符查找重复字符的最佳方法是什么?

【问题讨论】:

    标签: regex notepad++


    【解决方案1】:

    (.)\1+c\nc 不匹配,因为两者之间有换行符。

    您要匹配的是一大块相同的字符,可以用换行符分隔:

    (.)(?:\R?\1)+
    

    请参阅regex demo

    详情

    • (.) - 捕获组 1 匹配除换行符以外的任何单个字符
    • (?:\R?\1)+ - 1 个或多个序列:
      • \R? - 可选的换行符序列(CRLF、LF、CR,甚至是一些 Unicode 换行符,如 NEL
      • \1 - 与第 1 组捕获的字符相同。

    【讨论】:

      【解决方案2】:

      以下应该有效:

      (.)\r?\n?\1+
      

      【讨论】:

        【解决方案3】:

        您可以在(.)\1+ 之间匹配零次或多次换行符(?:\r?\n|\r)*,或者使用问号而不是星号使其可选。

        (.)(?:\r?\n|\r)*\1+

        【讨论】:

          猜你喜欢
          • 2013-08-13
          • 1970-01-01
          • 2012-09-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-15
          • 2011-07-19
          • 2022-08-13
          相关资源
          最近更新 更多