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

Pythonのre.findall()で正規表現を使う方法をわかりやすく解説

Pythonのre.findall()は、正規表現に一致したすべてのパターンをリスト形式で取得できる便利なメソッドです。指定した文字列の先頭から末尾まで全体を対象に検索を行い、パターンに一致した箇所をすべて返します。

re.search()re.match()は最初に一致した1件しか返しませんが、findall()を使えば文字列中に出現するパターンを漏れなく取得できます。このため、パターン検索にはre.findall()を積極的に使うことが推奨されています。

re.search()を使った基本例

まずは従来のre.search()を使った例を見てみましょう。戻り値はマッチオブジェクトになり、group()メソッドで一致した文字列を取り出します。

import re

result = re.search(r'TP', 'TP Tutorials Point TP')
print(result.group())

出力結果

TP

上記の例では、文字列「TP Tutorials Point TP」の中に「TP」というパターンが2回出現していますが、re.search()最初の1件のみを返します。

re.findall()ですべての一致を取得する

re.findall()を使えば、一致したすべてのパターンをリストとして受け取ることができます。

import re

result = re.findall(r'TP', 'TP Tutorials Point TP')
print(result)

出力結果

['TP', 'TP']

3つのメソッドの違いまとめ

  • re.match(): 文字列の先頭だけをチェックし、一致すればマッチオブジェクトを返す
  • re.search(): 文字列全体から最初の1件を検索してマッチオブジェクトを返す
  • re.findall(): 文字列全体から一致したすべてをリストで返す

用途に応じて使い分けるのが基本ですが、特に理由がなければre.findall()を選んでおけば、一致箇所を見逃す心配がありません。実務でもログ解析やデータ抽出など、複数件の一致が必要な場面で重宝するメソッドです。

  1. 【初心者向け】Python正規表現のグループ化の仕組みと使い方を徹底解説

    グループ化とは正規表現における「グループ化」とは、パターンの一部を丸括弧 () で囲むことです。これにより、単一の文字だけでなく、グループ全体に対して量指定子(*、+ など)や各種演算子を適用できるようになります。キャプチャグループと後方参照丸括弧には、部分式をひとまとめにする役割に加えて、「キャプチャグループ」を作成する働きもあります。グループ化された部分がマッチした文字列は「後方参照(バックリファレンス)」として保存され、あとから再利用することが可能です。実際の開発では、2つ以上の候補のどれかにマッチする正規表現が必要になる場面が多くあります。また、量指定子を複数の式全体に適用したいケース

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

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