Pythonのre
モジュールは、正規表現を使って文字列のパターンマッチングを行う強力なツールです。その中でも、re.findall
関数は特に便利で、文字列から特定のパターンに一致するすべての部分を抽出することができます。
re.findallの基本的な使い方
re.findall
関数を使用する際には、第1引数に正規表現パターンを、第2引数に文字列を指定します。文字列中でパターンにマッチした文字列(やそれらを格納するタプル)を要素とするリストとなります。
import re
s = 'id: deep, mail: [email protected], tel: 03-0123-4567'
r = re.findall('\\w+:', s) # 「英数字:」を抽出
print(r) # ['id:', 'mail:', 'tel:']
この例では、re.findall
関数の第1引数に「\w+:」というパターンを、第2引数に「id: deep, mail: [email protected], tel: 03-0123-4567」という文字列を渡しています。「\w+:」は「1文字以上の英数字」に続けてコロン「:」を意味するので、文字列の中では「id:」「mail:」「tel:」にマッチします。そのため、戻り値はこれらを要素とするリストとなっています。
グループを使った抽出
パターン中にかっこ「 ()」が含まれている場合には、そのかっこによって形成されるグループを要素とするリストが返送されます。
r = re.findall('(\\w+):', s) # 「英数字:」の「英数字」だけを抽出
print(r) # ['id', 'mail', 'tel']
この例では第1引数に渡すパターンが「(\w+):」となっています。このときには、かっこ内の正規表現「\w+」にマッチする部分がリストの要素となります。コロンは要素には含まれていないことに注目しましょう。
まとめ
Pythonのre.findall
関数は、文字列から特定のパターンに一致する部分を効率的に抽出するための強力なツールです。この記事では、その基本的な使い方と、グループを使った抽出方法について説明しました。これらの知識を活用して、Pythonでの文字列処理をより効率的に行いましょう。