正規表現は、複雑な文字列検索や置換を効率的に行える強力なツールです。本記事では、Pythonでの正規表現の使い方を初心者にも分かりやすく解説します。まず基本から学び、その後応用テクニックやエラー対策までを段階的に説明します。
Pythonの正規表現とは?基礎知識
正規表現とは、文字列のパターンを記述するための特別な記法です。たとえば「数字だけ」や「特定形式のメールアドレス」を簡潔に表現できます。Pythonでは標準ライブラリのreモジュールを利用します。詳しくはPython公式ドキュメントも参照できます。
正規表現を使うための準備
reモジュールのインポート
まず、Pythonで正規表現を使うにはimport re
が必要です。
import re
文字列パターンの基本構造
次に、パターンの基本を理解しましょう。たとえば\d
は数字、\w
は英数字とアンダースコアを表します。
pattern = r"\d+"
Python正規表現の基本操作
matchとsearchの違い
まずmatch()
は文字列の先頭から一致を探します。一方、search()
は文字列全体から最初に一致する部分を探します。
text = "ID12345XYZ"
print(re.match(r"\d+", text)) # None
print(re.search(r"\d+", text)) # <re.Match object>
findallとfinditer
次にfindall()
は一致した全ての部分をリストで返し、finditer()
はイテレータで返します。
text = "abc123xyz456"
nums = re.findall(r"\d+", text)
print(nums) # ['123', '456']
置換(sub)
さらに、一致部分を別の文字列に置換できます。
text = "apple 100 yen"
new_text = re.sub(r"\d+", "XXX", text)
print(new_text) # apple XXX yen
実践例:メールアドレスの抽出
最後に、このパターンで文章から全てのメールアドレスを抽出できます。
text = "Contact: user@example.com or admin@test.org"
pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-z]{2,}"
emails = re.findall(pattern, text)
print(emails) # ['user@example.com', 'admin@test.org']
さらに理解を深めたい方は、Pythonのlistの使い方を学ぶと、配列処理に役立ちます。またfor文やwhile文の基礎も合わせて読むと理解が一気に広がります。

コメント