Python 正規表現を簡単に

正規表現 (regex) は、パターンに基づいて文字列を照合および操作するために使用される強力なツールです。Python では、re モジュールが正規表現をサポートしており、複雑な文字列操作を効率的に実行できます。この記事では、正規表現の基礎を紹介し、Python で正規表現を効果的に使用する方法を説明します。

re モジュールを使い始める

Python で正規表現を使用するには、re モジュールをインポートする必要があります。このモジュールは、正規表現パターンを操作するためのいくつかの関数を提供します。

  • re.match() - 文字列の先頭のみ一致をチェックします。
  • re.search() - 文字列全体で一致するものを検索します。
  • re.findall() - 文字列内のすべての一致を検索し、リストとして返します。
  • re.sub() - 文字列内の一致を指定された置換で置き換えます。

基本的なパターンマッチング

正規表現では、特殊文字を使用して検索パターンを定義します。基本的なパターンをいくつか示します。

  • . - 改行を除く任意の 1 文字に一致します。
  • \d - 任意の数字に一致します([0-9]に相当)。
  • \w - 任意の英数字に一致します ([a-zA-Z0-9_] に相当)。
  • \s - 任意の空白文字に一致します。
  • ^ - 文字列の先頭に一致します。
  • $ - 文字列の末尾に一致します。

基本的なパターン マッチングを示す例をいくつか示します。

import re

# Match a pattern at the beginning of a string
result = re.match(r'Hello', 'Hello, World!')
print(result.group())  # Output: Hello

# Search for a pattern in the entire string
result = re.search(r'\d+', 'There are 24 hours in a day.')
print(result.group())  # Output: 24

グループでの正規表現の使用

グループは、一致したテキストの一部をキャプチャするために使用されます。括弧を使用して定義されます。たとえば、パターンの特定の部分を抽出するには、グループを使用できます。

pattern = r'(\d{3})-(\d{2})-(\d{4})'
text = 'My number is 123-45-6789.'

# Find all matches with groups
match = re.search(pattern, text)
if match:
    print(f'Area Code: {match.group(1)}')  # Output: 123
    print(f'Prefix: {match.group(2)}')     # Output: 45
    print(f'Suffix: {match.group(3)}')     # Output: 6789

特殊文字の使用

正規表現には、より複雑なパターン マッチングのためのいくつかの特殊文字が含まれています。

  • * - 前の要素の 0 回以上の出現に一致します。
  • + - 前の要素の 1 回以上の出現に一致します。
  • ? - 前の要素の 0 回または 1 回の出現に一致します。
  • {n} - 前の要素の n 回の出現に一致します。
  • | - 前のパターンまたは後のパターンのいずれかに一致します。

特殊文字を使用した例をいくつか示します。

# Match a pattern with 0 or more occurrences
result = re.findall(r'\d*', '123 abc 456')
print(result)  # Output: ['123', '', '', '456']

# Match a pattern with 1 or more occurrences
result = re.findall(r'\d+', 'There are 24 apples and 3 oranges.')
print(result)  # Output: ['24', '3']

正規表現によるテキストの置換

re.sub() 関数は、パターンに一致する文字列の一部を置き換えるために使用されます。

text = 'The rain in Spain falls mainly in the plain.'

# Replace 'Spain' with 'France'
new_text = re.sub(r'Spain', 'France', text)
print(new_text)  # Output: The rain in France falls mainly in the plain.

結論

正規表現は、Python でのパターン マッチングとテキスト操作のための強力なツールです。re モジュールを使用すると、複雑なパターンに基づいてテキストを検索、一致、置換できます。基本的な構文と特殊文字を理解することで、正規表現を活用して、さまざまなテキスト処理タスクを効果的に処理できます。