【发布时间】:2018-09-23 12:59:13
【问题描述】:
我用表达方式
(.)\1+
使用 Notepad++ 查找文本文件中的重复字符。
但是,此表达式不适用于跨两行的重复字符:
abc
cba
忽略换行符查找重复字符的最佳方法是什么?
【问题讨论】:
我用表达方式
(.)\1+
使用 Notepad++ 查找文本文件中的重复字符。
但是,此表达式不适用于跨两行的重复字符:
abc
cba
忽略换行符查找重复字符的最佳方法是什么?
【问题讨论】:
(.)\1+ 与 c\nc 不匹配,因为两者之间有换行符。
您要匹配的是一大块相同的字符,可以用换行符分隔:
(.)(?:\R?\1)+
请参阅regex demo。
详情
(.) - 捕获组 1 匹配除换行符以外的任何单个字符(?:\R?\1)+ - 1 个或多个序列:
\R? - 可选的换行符序列(CRLF、LF、CR,甚至是一些 Unicode 换行符,如 NEL)\1 - 与第 1 组捕获的字符相同。【讨论】:
以下应该有效:
(.)\r?\n?\1+
【讨论】:
您可以在(.) 和\1+ 之间匹配零次或多次换行符(?:\r?\n|\r)*,或者使用问号而不是星号使其可选。
(.)(?:\r?\n|\r)*\1+
【讨论】: