Pythonで正規表現の書き方

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での正規表現を効果的に活用できます。
正規表現のパターンは複雑になることもありますが、パターンの意味を理解することで、柔軟かつ強力な文字列操作が可能になります。