2016-05-26 21 views
1

Notepad ++で見つけて、次のように置き換えたい。Notepad ++の正規表現++単語から重複する文字を削除する

単語が「ブック」の場合 この単語には2つの「o」があります。私は言葉を処理した後 'O'

1を削除したい 'ボク' となります

をここにいくつかの例

UFU> UF

サンセリフです>さん

noobの>ノブ

クロック> clok

AABBCC> ABC

または、重複する単語を1文字ずつ削除できます。 '' そして、アップ

ABCDEEABCDDABB> ABCDEEBCDDBB> ABCDEECDD> ABCDEEDD> ABCDEE> ABCDE

Antidisestablishmentarianism> Antidisestblishmentrinism like- 'Z' に...そして 'b' を複製する最初のすべての重複を削除してみましょう> Antidisestblishmntrinism> Antidsestblshmntrnsm> Antidsestblshmntrns> Antidsestblshmtrs> Antidsetblhmtr> Antidseblhmr

+0

バナナの出力は? – rock321987

+0

バナナは禁止されます。それ以外の場合は、重複する単語を1つずつ削除できます。最初にすべての重複 'a'を削除した後、 'b'を複製してください... –

+0

とカンタロープ! – sweaver2112

答えて

0

これは、あなたは、すべての繰り返しが消費されるまで反復する必要が\1\2\3\5
で置き換え(\S*)([a-z])(\S*)(\2)(\S*)
に動作します。

説明
各括弧のペアには5つのキャプチャグループがあります。そのうち3つは(\S*)であり、これは単語境界での表現を維持するためのスペースがないことを意味します。 ([a-z])は1つのcharに一致し、(\2)は同じ1つのcharに一致します。このキャプチャグループ(\2)は4番目であり、複製された文字を保持せずに再構成式から外れた固有のものです。

+0

スムーズに作業します。ありがとう。私は正規表現を見つけることを理解していますが、正規表現の置き換えを理解していません –

+0

置換テキストは正規表現ではなく、エスケープされた数字がキャプチャグループとリテラルが存在することを示す「expresion」です。 (この場合は何もありません)。シンボルはバックスラッシュを除いて特別な意味を持ちません –

0

使用すると、1回のパスでそれをすべて行いたい場合は、だけではない正規表現で、方法はありません。

((.)(?:(?!\2).)*)\2+ 

$1と交換して、テキストが変化しなくなるまでそうやっておいてください。ただし、一つだけの正規表現で複数のパスでそれを行うことができます。

これは、1つまたは複数の重複を持つ最初の文字を見つけ、グループ1の重複に満たない次の文字を取り込みます。全体のマッチをグループ#1だけに置き換えると、重複する文字(または複数の文字を使用する場合は\2+)が効果的に削除されます。

複数の単語を含むテキストに取り組んで、それらのすべてを変更したい場合は、あなたは\Sまたはその代わり.\wは、空白および/または句読点を無視して使用することができます。

関連する問題