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

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

グループ化とは

正規表現における「グループ化」とは、パターンの一部を丸括弧 () で囲むことです。これにより、単一の文字だけでなく、グループ全体に対して量指定子(*+ など)や各種演算子を適用できるようになります。

キャプチャグループと後方参照

丸括弧には、部分式をひとまとめにする役割に加えて、「キャプチャグループ」を作成する働きもあります。グループ化された部分がマッチした文字列は「後方参照(バックリファレンス)」として保存され、あとから再利用することが可能です。

実際の開発では、2つ以上の候補のどれかにマッチする正規表現が必要になる場面が多くあります。また、量指定子を複数の式全体に適用したいケースもあるでしょう。こうした要件は、括弧によるグループ化と、縦棒 | を使った「選択(オルタネーション)」を組み合わせることで実現できます。

選択は、複数の異なる候補のいずれかにマッチさせたい場合に特に便利です。たとえば、正規表現 aircraft|airplane|jet は、「aircraft」「airplane」「jet」のいずれかを含むテキストにマッチします。同じ目的は、共通部分を括弧でまとめた air(craft|plane)|jet によっても達成でき、こちらの方がパターンを簡潔に保てます。

コード例

次の例では、キャプチャグループを使って文字列から単語(英数字の連なり)をすべて抽出しています。

import re

s = 'Tahiti $% Tahiti *&^ 34 Atoll'
result = re.findall(r'(\w+)', s)
print(result)

出力結果

['Tahiti', 'Tahiti', '34', 'Atoll']

この例では、(\w+) というキャプチャグループによって、記号や空白を除いた単語ごとの文字列がリストとして取得されています。括弧で囲まれた部分がマッチした内容は後方参照として保存されるため、re.sub() などを使った置換処理の中で再利用することもできます。

  1. Pythonの正規表現で任意の1文字にマッチさせる方法

    Pythonの正規表現では、特別なメタ文字「.」(ドット)を使用することで、文字列内の任意の1文字にマッチさせることができます。このメタ文字は、改行文字(\n)を除くあらゆる単一の文字と一致します。re.findall() 関数と組み合わせれば、指定した文字列からすべての文字を1つずつ取り出すことが可能です。サンプルコードimport re foo = https://www/twitter/index.php 403 result = re.findall(r., foo) print(result)実行結果上記のコードを実行すると、次のような出力が得られます。文字列内の各文字(英字・記号

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

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