【Python】正規表現reの基本的な使い方

Python
この記事は約6分で読めます。

こんにちは、JS2IIUです。
Pythonのreモジュールは、正規表現を用いた文字列操作を行うための機能を提供します。本記事では、基本的な使い方、主な関数、よく使う正規表現パターン、そして実践的な使用例を紹介します。今回もよろしくお願いします。

reモジュールの基本的な使い方

reモジュールを使用する際は、まずインポートが必要です。その後、正規表現パターンを定義し、対象の文字列に対してマッチング操作を行います。

Python
import re

# 数字にマッチするパターン
pattern = r'\d+'
text = '今日は2025年2月17日です。'

# パターンにマッチする部分を検索
matches = re.findall(pattern, text)
print(matches)  # 出力: ['2025', '2', '17']

主な関数とサンプルコード

re.findall()

パターンにマッチするすべての部分文字列をリストとして返します。

Python
import re
text = 'apple 123 banana 456 cherry 789'
pattern = r'\d+'
print(re.findall(pattern, text))  # 出力: ['123', '456', '789']

re.search()

最初のマッチを見つけ、マッチオブジェクトを返します。

Python
import re
text = 'My phone number is 080-1234-5678'
pattern = r'\d{2,4}-\d{3,4}-\d{4}'
match = re.search(pattern, text)
if match:
    print(match.group())  # 出力: 080-1234-5678

re.match()

文字列の先頭でパターンがマッチするかをチェックします。

Python
import re
text = 'Python is great'
pattern = r'Python'
match = re.match(pattern, text)
if match:
    print('Matched:', match.group())  # 出力: Matched: Python

re.sub()

パターンにマッチする部分を置換します。

Python
import re
text = 'My email is test@example.com'
pattern = r'\S+@\S+'
print(re.sub(pattern, '[REDACTED]', text))  # 出力: My email is [REDACTED]

re.split()

パターンにマッチする部分で文字列を分割します。

Python
import re
text = 'apple,banana;cherry orange'
pattern = r'[;, ]+'
print(re.split(pattern, text))  # 出力: ['apple', 'banana', 'cherry', 'orange']

よく使う正規表現パターン

  • . : 任意の1文字にマッチ
  • ^ : 文字列の先頭にマッチ
  • $ : 文字列の末尾にマッチ
  • * : 直前の文字が0回以上繰り返される
  • + : 直前の文字が1回以上繰り返される
  • {m,n} : 直前の文字がm回からn回繰り返される
  • [] : 角括弧内のいずれかの文字にマッチ
  • | : OR条件
  • () : グループ化

実践的な使用例

1. 電話番号の抽出

Python
import re
text = '連絡先: 03-1234-5678, 080-9876-5432'
pattern = r'\d{2,4}-\d{3,4}-\d{4}'
print(re.findall(pattern, text))  # 出力: ['03-1234-5678', '080-9876-5432']

2. 日付の抽出

Python
import re
text = 'イベント日程: 2024/11/05, 2025-02-17'
pattern = r'\d{4}[/-]\d{2}[/-]\d{2}'
print(re.findall(pattern, text))  # 出力: ['2024/11/05', '2025-02-17']

3. HTMLタグの削除

Python
import re
html = '<p>これは<strong>重要</strong>なテキストです。</p>'
pattern = r'<.*?>'
print(re.sub(pattern, '', html))  # 出力: これは重要なテキストです。

参考になるWEBサイト

最後に、書籍のPRです。
24年9月に出版された「ハイパーモダンPython-信頼性の高いワークフローを構築するモダンテクニック」、Claudio Jolowicz著、嶋田、鈴木訳。開発環境の構築、プロジェクトの管理、テストに関して実践的な内容でとても参考になる一冊です。ぜひ手に取ってみてください。

コメント

タイトルとURLをコピーしました