0Pricing
Python Academy · レッスン

re.match、re.search、re.findall の使い方

主要な re 関数を使って文字列からパターンを見つけます。

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

概要

reモジュールには、文字列にパターンを適用するための複数の関数が用意されています。

re.match() — 文字列の先頭

re.match(pattern, string)は、文字列の先頭でのみマッチします。MatchオブジェクトまたはNoneを返します。
import re
print(re.match(r'\d+', '123abc'))  # match
print(re.match(r'\d+', 'abc123'))  # None

re.search() — 任意の位置

re.search(pattern, string)は、文字列内の任意の位置にある最初のマッチを見つけます。MatchまたはNoneを返します。
import re
m = re.search(r'\d+', 'abc 123 def')
if m: print(m.group())

re.findall() — すべてのマッチ

re.findall(pattern, string)は、重複しないすべてのマッチを文字列のリストとして返します。
import re
print(re.findall(r'\d+', 'one 1 two 22 three 333'))

re.finditer() — イテレーター

re.finditer()はfindall()に似ていますが、Matchオブジェクトのイテレーターを返します。大きな文字列でもメモリ効率に優れています。
import re
for m in re.finditer(r'\d+', 'x1 y22 z333'):
    print(m.group(), m.start(), m.end())

Matchオブジェクトのメソッド

m.group()はマッチした文字列を返します。m.start()とm.end()は位置を返します。m.span()は(start, end)を返します。
import re
m = re.search(r'(\w+)@(\w+)', 'send to user@example')
if m:
    print(m.group(), m.group(1), m.group(2))

re.fullmatch()

re.fullmatch(pattern, string)は、パターンが文字列全体にマッチすることを要求します。
import re
print(re.fullmatch(r'\d+', '123'))    # match
print(re.fullmatch(r'\d+', '123abc'))  # None

re.split()

re.split(r'\s+', string)はパターンを区切りとして分割します。r'[,;\s]+'はカンマ、セミコロン、空白で分割します。
import re
print(re.split(r'[,;\s]+', 'one,two; three four'))

置換のためのre.sub()

re.sub(pattern, repl, string)はマッチした部分を置換します。replには文字列または関数を指定できます。
import re
print(re.sub(r'\d+', 'NUM', 'I have 3 cats and 12 dogs'))

コンパイル済みパターン

pattern = re.compile(r'\d+')でパターンを一度コンパイルします。pattern.findall()、.search()などを使うと、繰り返し利用する場合に高速です。
import re
digits = re.compile(r'\d+')
print(digits.findall('abc 123 def 456'))

フラグ

re.IGNORECASE (re.I)、re.MULTILINE (re.M)、re.DOTALL (re.S)は、マッチの動作を変更します。
import re
print(re.findall(r'hello', 'HELLO World', re.IGNORECASE))

クイックチェック

re.match()とre.search()の違いは何ですか?

まとめ

re.match(先頭のみ)、re.search(任意の位置で最初のマッチ)、re.findall(すべてをリストで取得)、re.finditer(すべてをMatchオブジェクトとして取得)、re.sub(置換)、re.compile(パターンの再利用)。

続けましょう

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

よくある質問

「re.match、re.search、re.findall の使い方」レッスンは無料ですか?

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

「re.match、re.search、re.findall の使い方」で何を学びますか?

主要な re 関数を使って文字列からパターンを見つけます。 ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「re.match、re.search、re.findall の使い方」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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