正規表現:同じ文字の繰り返しをマッチする表現

最終更新:2018-07-23 by Joe

正規表現において、同じ文字の連続や、パターンの繰り返しの出現をマッチします。

同一文字の連続(繰り返し)の正規表現

「何の文字かは問わず、同じ文字の連続」といったマッチングを行うには、後方参照を使います。

下記は、メタ文字「.(改行以外の一文字)」で見つかったマッチング文字を、その後の「\1」で後方参照した例です。バックスラッシュの後の数字が、何番目のマッチかを指定します。

// メタ文字を後方参照
(.)\1+

上記は、括弧でキャプチャした一番目のマッチ(というか、「.」は一文字しかマッチしないですが・・)の文字を「\1」で指定しますので、その文字が「+(1回以上の連続)」という意味ですね。

【実践】Vim で、文字の連続をマッチし、一文字に置換する

一つ目の文字を「.」でマッチし、あとは、量指定子で連続数を指定します。Vim の例です。

連続2文字の場合

// メタ文字を後方参照
%s/(.)\1+/

連続2文字以上の場合

// メタ文字を後方参照
%s/(.)\1{2,}/

連続2文字以上、3文字以下の場合

// メタ文字を後方参照
%s/(.)\1{2,3}/

文字の繰り返しの参考情報

正規表現における量指定子の使い分けは、こちらで特集しています。