Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python正規表現で文字列中の繰り返し数字を検出する方法

Pythonの正規表現(reモジュール)を使うと、文字列の中から同じ数字が連続して繰り返される部分を簡単に見つけることができます。ポイントは、キャプチャグループとバックリファレンス、そして量指定子 {n} を組み合わせることです。

繰り返し数字を検出するサンプルコード

次のコードは、与えられた文字列の中から「同じ数字が4回連続して出現している箇所」を検索する例です。

import re

result = re.search(r'(\d)\1{3}', '54222267890')
print(result.group())

実行結果

このコードを実行すると、以下のようにマッチした部分が出力されます。

2222

正規表現の仕組みを解説

使用しているパターン (\d)\1{3} の各要素は次のような意味を持っています。

  • (\d):任意の1桁の数字にマッチし、その数字をキャプチャグループとして記録します。
  • \1:バックリファレンスと呼ばれる記法で、「直前にキャプチャしたグループとまったく同じ文字」にマッチします。
  • {3}:直前の要素(この場合は \1)をちょうど3回繰り返すことを意味します。

つまり、最初の1回+バックリファレンスの3回で、合計4回同じ数字が並んでいる部分を検出することになります。例の文字列では 2222 が該当するため、これが出力されています。

応用:繰り返し回数を変更する

繰り返しの回数を変えたい場合は、{n} の数値を調整するだけで対応できます。たとえば、同じ数字が3回以上連続する箇所をすべて取得したい場合は、findall を使って次のように書けます。

import re

matches = re.findall(r'(\d)\1{2}', '5422226789111555')
print(matches)

このように、バックリファレンスを活用すれば、単純な数字の並びだけでなく「同一文字の連続出現」という複雑な条件も柔軟に扱えるようになります。

  1. Pythonの正規表現を使って文字列から数字のみを抽出・マッチングする方法

    Pythonでは、標準ライブラリの re モジュールを使うことで、正規表現によるパターンマッチングが簡単に行えます。文字列から「数字のみ」を取り出したい場合は、メタ文字 \d(任意の1桁の数字に一致)を使用します。ここでは、代表的な2つの方法——re.search() と re.findall() を使った例を紹介します。なお、コードはPython 3系の記法に準拠しています。例1:re.search() で最初に見つかった数字の並びを取得する次のコードは、指定した文字列の中から最初に出現する連続した数字(1桁以上)を検索し、マッチオブジェクトとして返します。import re m = re

  2. Pythonの正規表現における修飾子(フラグ)の使い方と機能一覧

    Python正規表現の修飾子とはPythonのreモジュールでは、正規表現によるパターンマッチングの挙動を制御するために、さまざまな修飾子(フラグ)を指定することができます。これらの修飾子を使うことで、大文字小文字の区別や改行の扱いなど、マッチングの動作を柔軟に変更できます。以下に、主要な修飾子とその機能を一覧形式で紹介します。1. re.I(re.IGNORECASE)大文字と小文字を区別せずにマッチングを行います。英字の大小を無視したい場合に便利です。2. re.L(re.LOCALE)現在のロケール設定に従って単語を解釈します。このフラグは、アルファベット系のグループ(\w および \W