在Notepad ++中,我想以下列方式查找和替换。
如果一个词是' Book' 这是两个' o'在这个词中。我想删除一个' o'
处理完毕后,这将是' Bok'
以下是一些例子
UFU> UF
sans> SAN
noob>打头
时钟> clok
AABBCC> ABC
或者我可以逐个删除重复的单词。首先删除所有重复的' a'然后复制' b'然后......直到' z'
像 -
ABCDEEABCDDABB> ABCDEEBCDDBB> ABCDEECDD> ABCDEEDD> ABCDEE> ABCDE
Antidisestablishmentarianism>
答案 0 :(得分:0)
如果你想在一次通过中完成所有操作,那就没有办法了,不能单独使用正则表达式。但是,您可以使用一个正则表达式在多个过程中执行此操作:
((.)(?:(?!\2).)*)\2+
替换为$1
并继续这样做,直到文本停止更改。
这将查找具有一个或多个重复项的第一个字符,并捕获它以及任何后续字符,而不是组#1中的副本。仅使用#1组替换整个匹配会有效删除重复的字符(如果\2+
消耗多个字符,则删除字符)。
如果您正在处理包含多个字词的文字,并希望对其进行全部更改,则可以使用\S
或\w
代替.
来忽略空格和/或标点符号。
答案 1 :(得分:0)
这有效(\S*)([a-z])(\S*)(\2)(\S*)
替换为\1\2\3\5
您需要迭代直到消耗掉所有重复。
<强>解释强>:
每个括号对有五个捕获组。其中三个是(\S*)
,这意味着&#34;没有空格&#34;保持对单词边界的表达。 ([a-z])
匹配一个char,(\2)
匹配同一个char。此捕获组(\2)
是第4个,并且是重建表达式之外的唯一,保留重复的char。