0Pricing
Learn AI with Python · レッスン

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

キャプチャ用の括弧、(?P ...) 名前付きグループ、re.fullmatch()、先読み・後読みを学びます。

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

グループを使う理由

グループを使うと、一致した部分の一部を分離して取得できます。電話番号から市外局番を、日付から年を、メールアドレスからユーザー名を取り出すといった処理が可能です。

このレッスンでは、キャプチャグループ、名前付きグループ、非キャプチャグループ、先読み・後読みについて学びます。

( ) によるキャプチャグループ

パターンの一部を丸かっこで囲むと、その部分をキャプチャできます。一致全体と各グループには、Match object からアクセスできます。

import re

m = re.search("(\d{4})-(\d{2})-(\d{2})", "Date: 2026-05-29")
print(m.group())    # "2026-05-29" (whole match)
print(m.group(1))   # "2026"
print(m.group(2))   # "05"

match.group、groups、groupdict

便利なアクセサーは次のとおりです。

  • m.group(0) — 一致全体
  • m.group(n) — n 番目のキャプチャ
  • m.groups() — すべてのキャプチャを含むタプル
import re

m = re.search("(\d{4})-(\d{2})-(\d{2})", "2026-05-29")
print(m.groups())   # ("2026", "05", "29")
year, month, day = m.groups()

(?P<name>...) による名前付きグループ

グループを番号で管理すると、壊れやすくなります。名前付きグループでは(?P<name>...)を使うため、意味のある名前でキャプチャを参照できます。

import re

m = re.search("(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})", "2026-05-29")
print(m.group("year"))   # "2026"
print(m.group("month"))  # "05"

構造化された出力のための groupdict

m.groupdict()は、すべての名前付きグループを辞書として返します。一致したテキストを構造化されたレコードに変換するのに最適です。

import re

m = re.search("(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})", "2026-05-29")
print(m.groupdict())
# {"year": "2026", "month": "05", "day": "29"}

非キャプチャグループ (?:...)

量指定子を適用する場合など、グループ化のためだけに丸かっこが必要で、キャプチャは不要なことがあります。その場合は(?:...)を使用してください。

これにより、グループ番号をすっきり保てます。

import re

# Group "ab" so + applies, but do not capture it
m = re.search("(?:ab)+(\d+)", "ababab42")
print(m.group(1))   # "42" -> group 1 is the digits, not "ab"

後方参照

後方参照の\1は、前にグループがキャプチャしたテキストと同じテキストに一致します。繰り返し現れる単語を見つけるのに便利です。

import re

# Find a word repeated twice in a row
print(re.findall("(\w+) \1", "the the cat cat sat"))
# ["the", "cat"]

先読み (?=...)

肯定先読み (?=...) は、後に続くはずの内容を消費せずに確認します。確認したテキストはマッチの一部ではありません。

ここでは、後ろに "px" が続く場合にのみ数値をマッチさせます。

import re

print(re.findall("\d+(?=px)", "10px 20em 30px"))
# ["10", "30"]  -> "20" skipped (not followed by px)

否定先読み (?!...)

否定先読み (?!...) は、後に続いてはならない内容を確認します。後ろに "px" が続かない場合にのみ数値をマッチさせます。

import re

print(re.findall("\d+(?!px)", "10px 20em 30px"))
# matches numbers not followed directly by px

後読み (?<=...) と (?<!...)

後読みは、マッチの前にある内容を消費せずに確認します。

  • (?<=...) 肯定 — 前に特定の内容がある必要があります
  • (?<!...) 否定 — 前に特定の内容があってはなりません

ここでは、ドル記号が前に付いた金額を、記号自体は含めずに取り出します。

import re

print(re.findall("(?<=\$)\d+", "price $50 and 60 units"))
# ["50"]  -> only the amount after $

グループと先読み・後読みの組み合わせ

実際の抽出処理では、これらのツールを組み合わせます。このパターンは、通貨記号が前にあり、小数部分が後に続く必要がある、名前付きの価格を取り出します。

import re

text = "Total: $1299.99 paid"
m = re.search("(?<=\$)(?P<amount>\d+)\.(?P<cents>\d{2})", text)
print(m.group("amount"), m.group("cents"))   # 1299 99

クイックチェック:名前付きグループ

番号ではなく、"year" のような分かりやすい名前でマッチを取り出したいとします。

振り返り:グループと先読み・後読み

これで、テキストから正確な構造を取り出せるようになりました。

  • ( ) キャプチャグループと m.group(n)、m.groups()
  • (?P<name>...) 名前付きグループと m.groupdict()
  • きれいにグループ化するための (?:...) 非捕捉グループ
  • 繰り返しに使うバックリファレンス \1
  • 先読み (?=)/(?!) と後読み (?<=)/(?<!)

次は、これらをすべて組み合わせて、AI向けにテキストを整形します。

よくある質問

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

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

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

キャプチャ用の括弧、(?P ...) 名前付きグループ、re.fullmatch()、先読み・後読みを学びます。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

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

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

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

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

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

  1. 正規表現パターンと文字クラス
  2. re モジュール:search、match、findall、sub
  3. キャプチャグループと名前付きグループ
  4. 正規表現による AI 向けテキストクリーニング
← Learn AI with Pythonに戻る