0Pricing
Python Academy · レッスン

グループと名前付きキャプチャ

キャプチャグループと名前付きグループ構文でデータを抽出します。

「グループと名前付きキャプチャ」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。

概要

キャプチャグループは、マッチした部分から特定の部分を取り出します。名前付きグループを使うと、取り出したデータの内容が明確になります。

基本的なキャプチャグループ

括弧()でキャプチャグループを作成します。m.group(1)は最初のグループのマッチを返します。
import re
m = re.search(r'(\d{4})-(\d{2})-(\d{2})', '2024-01-15')
if m: print(m.group(1), m.group(2), m.group(3))

m.groups()

m.groups()は、すべてのキャプチャグループをタプルとして返します。
import re
m = re.search(r'(\w+)@(\w+)\.(\w+)', 'user@example.com')
if m: print(m.groups())

名前付きグループ

(?Ppattern)で名前付きグループを作成します。m.group('name')またはm.groupdict()でアクセスできます。
import re
m = re.search(
    r'(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})',
    '2024-01-15'
)
if m: print(m.groupdict())

非キャプチャグループ

(?:pattern)は、キャプチャせずにグループ化します。量指定子のためにグループ化が必要でも、マッチ結果を取得する必要がない場合に便利です。
import re
print(re.findall(r'(?:cat|dog)s?', 'cats dogs cat dog'))

後方参照

パターン内の\1は、グループ1がマッチした内容を参照します。繰り返される単語を見つける場合に便利です。
import re
# Match repeated words
m = re.search(r'\b(\w+)\s+\1\b', 'the the quick brown', re.IGNORECASE)
if m: print('repeated:', m.group())

グループを使ったfindall

パターンにグループがある場合、findallは完全なマッチではなく、グループのタプルのリストを返します。
import re
result = re.findall(r'(\w+)=(\w+)', 'x=1 y=2 z=3')
print(result)

re.sub()でのグループの利用

re.sub()では、置換文字列に\1または\gを記述して、キャプチャしたグループを挿入できます。
import re
result = re.sub(r'(\w+)\s(\w+)', r'\2 \1', 'John Smith')
print(result)

先読み (?= )

(?=expr)は肯定先読みです。exprが続く位置にマッチしますが、文字は消費しません。
import re
# Prices followed by USD
print(re.findall(r'\d+(?= USD)', '100 USD 200 EUR 300 USD'))

後読み (?<= )

(?<=expr)は肯定後読みです。exprが直前にある位置にマッチしますが、文字は消費しません。
import re
print(re.findall(r'(?<=\$)\d+', 'paid $100 and $200'))

名前付き後方参照

パターン内の(?P=name)は、名前付きグループの値を参照します。閉じタグのマッチに便利です。
import re
m = re.search(r'<(?P<tag>\w+)>.*?</(?P=tag)>', '<b>hello</b>')
if m: print(m.group())

クイックチェック

マッチオブジェクトmから、'year'という名前のキャプチャグループにはどのようにアクセスしますか?

まとめ

グループ()は部分をキャプチャします。m.group(1)、m.groups()、m.groupdict()で取得できます。名前付きグループ:(?P)。非キャプチャグループ:(?:)。後方参照:置換では\1または\g。

続けましょう

素晴らしい成果です!次のレッスンが待っています。

よくある質問

「グループと名前付きキャプチャ」レッスンは無料ですか?

はい。「グループと名前付きキャプチャ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。

「グループと名前付きキャプチャ」で何を学びますか?

キャプチャグループと名前付きグループ構文でデータを抽出します。 ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Python Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「グループと名前付きキャプチャ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPython Academyレッスンでコードを書いて実行できますか?

はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 正規表現の基礎
  2. re.match、re.search、re.findall の使い方
  3. グループと名前付きキャプチャ
  4. re.sub、フラグ、コンパイル済みパターン
← Python Academyに戻る