正規表現は、文字列の検索や置換、分割に極めて便利なツールです。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’)を検出しています。
まとめ
正規表現の量指定子は、多くのテキスト処理タスクで非常に有用です。基本的な量指定子から、より高度な応用例までを理解し、日々のコーディング作業で活用してみてください。
コメント