Pythonで正規表現の量指定子を使いこなす方法

正規表現は、文字列の検索や置換、分割に極めて便利なツールです。Pythonでも`re`モジュールを用いて簡単に利用することができます。この記事では、正規表現での「量指定子」に焦点を当て、その基本的な使い方から応用例までを解説します。

目次

量指定子とは

量指定子は、正規表現の中で一定のパターンが何回繰り返されるかを指定するための記号または記法です。例えば、”a+”は「一回以上のa」を意味します。

基本的な量指定子

Pythonの`re`モジュールでよく使われる量指定子には以下のようなものがあります。

  • *: 0回以上の繰り返し
  • +: 1回以上の繰り返し
  • ?: 0回または1回の繰り返し
  • {n}: n回の繰り返し
  • {n,}: n回以上の繰り返し
  • {n,m}: n回以上、m回以下の繰り返し

量指定子の基本的な使用例

import re

# '*'を使用した例:'ab*' は、'a'に続く0回以上の'b'
pattern = 'ab*'
string = 'aa ab abb abbb'
result = re.findall(pattern, string)
print(result)  # ['a', 'ab', 'abb', 'abbb']

この例では、`*`を使って、’a’に続く’b’が0回以上繰り返されるパターンを検索しています。

応用例1:電話番号の抽出

コードと解説

# 電話番号を抽出するために量指定子を使う
pattern = r'\\d{2,4}-\\d{2,4}-\\d{4}'
string = 'My numbers are 03-1234-5678 and 090-1234-5678.'
result = re.findall(pattern, string)
print(result)  # ['03-1234-5678', '090-1234-5678']

この例では、`{n,m}`を使用して、数字がn回以上m回以下繰り返されるパターンを抽出しています。電話番号の場面で非常に便利です。

応用例2:繰り返しの文字列を検出する

コードと解説

# 繰り返し文字を抽出する
pattern = r'(\\w)\\1{2,}'
string = 'aaa bb ccc dddd'
result = re.findall(pattern, string)
print(result)  # ['a', 'c', 'd']

この例では、バックリファレンスと量指定子を組み合わせて、3回以上繰り返される文字(’a’, ‘c’, ‘d’)を検出しています。

まとめ

正規表現の量指定子は、多くのテキスト処理タスクで非常に有用です。基本的な量指定子から、より高度な応用例までを理解し、日々のコーディング作業で活用してみてください。

コメント

コメントする

目次