Pythonで正規表現の書き方
Pythonで正規表現を使用するには、reモジュールを使います。
このモジュールは、正規表現パターンを使って文字列の検索、マッチング、置換などを行うための関数を提供しています。
以下に、基本的な使い方を説明します。
reモジュールの基本的な関数
1. re.match()
re.match()は、文字列の先頭が正規表現パターンに一致するかどうかをチェックします。
先頭に一致しない場合はNoneを返します。
import re pattern = r'\d+' # 数字の1回以上の繰り返し text = '123abc' match = re.match(pattern, text) if match: print('Match found:', match.group()) else: print('No match')
2. re.search()
re.search()は、文字列全体から正規表現パターンに一致する部分を検索します。
最初に一致した部分を見つけて返します。
import re pattern = r'\d+' text = 'abc123def' search = re.search(pattern, text) if search: print('Search found:', search.group()) else: print('No match')
3. re.findall()
re.findall()は、文字列中のすべての一致をリストとして返します。
import re pattern = r'\d+' text = '123 abc 456 def 789' results = re.findall(pattern, text) print('Findall results:', results)
4. re.finditer()
re.finditer()は、文字列中の一致部分をイテレータとして返します。
各一致はre.Matchオブジェクトです。
import re pattern = r'\d+' text = '123 abc 456 def 789' for match in re.finditer(pattern, text): print('Finditer match:', match.group())
5. re.sub()
re.sub()は、正規表現パターンに一致する部分を置換します。
import re pattern = r'\d+' replacement = 'NUMBER' text = '123 abc 456 def 789' result = re.sub(pattern, replacement, text) print('Sub result:', result)
正規表現パターンの構文
- メタキャラクタ
- .: 任意の1文字
- ^: 文字列の先頭
- $: 文字列の末尾
- *: 0回以上の繰り返し
- +: 1回以上の繰り返し
- ?: 0回または1回の繰り返し
- []: 文字クラス(例: [abc]は'a'、'b'、'c'のいずれか1文字)
- |: OR条件(例: a|bは'a'または'b')
- エスケープシーケンス
- \d: 数字([0-9]と同じ)
- \D: 非数字([^0-9]と同じ)
- \w: 単語文字([a-zA-Z0-9_]と同じ)
- \W: 非単語文字([^a-zA-Z0-9_]と同じ)
- \s: 空白文字(スペース、タブ、改行など)
- \S: 非空白文字
- グループ化とキャプチャ
- (): グループ化(例: (abc)+は'abc'の1回以上の繰り返し)
- (?:): 非キャプチャグループ(例: (?:abc)+は'abc'の1回以上の繰り返しだがキャプチャしない)
- 量指定子
- {n}: n回繰り返す(例: a{3}は'a'が3回続く)
- {n,}: n回以上繰り返す(例: a{2,}は'a'が2回以上続く)
- {n,m}: n回からm回繰り返す(例: a{2,5}は'a'が2回から5回続く)
これらの基本的な構文や関数を使うことで、Pythonでの正規表現を効果的に活用できます。
正規表現のパターンは複雑になることもありますが、パターンの意味を理解することで、柔軟かつ強力な文字列操作が可能になります。