Pythonで正規表現を使う際、前方参照と後方参照は非常に便利な機能です。この記事では、前方参照と後方参照の基本的な使い方から、実用的な応用例に至るまで詳しく解説します。
目次
前方参照と後方参照とは
正規表現で文字列を検索または置換する際、特定のパターンが前にまたは後に出現した場面でその値を再利用したいときに使います。前方参照は、現在の検索位置より前のテキストを参照します。後方参照は、現在の検索位置より後のテキストを参照します。
基本的な使い方
前方参照
前方参照は主に`\1`、`\2`といった形で表されます。
import re
text = "apple apple, banana banana"
pattern = r"\\b(\w+) \\1\\b"
matches = re.findall(pattern, text)
print(matches)
このコードでは、前方参照を使用して、同じ単語が続くパターンを探します。
後方参照
Pythonでは後方参照はあまり一般的ではありませんが、一部の正規表現エンジンでサポートされています。
pattern = r"\\b(?<=(\w)\\w) \\1\\b"
matches = re.findall(pattern, text)
print(matches)
後方参照では、特定の単語が出現した後に特定の単語が続くかどうかをチェックします。
応用例
日付のフォーマット変更
日付のフォーマットを変更する場面で前方参照と後方参照が役立ちます。
text = "2021-10-15"
pattern = r"(\d{4})-(\d{2})-(\d{2})"
replacement = r"\\3/\\2/\\1"
new_text = re.sub(pattern, replacement, text)
print(new_text)
この例では、"YYYY-MM-DD"形式の日付を"DD/MM/YYYY"形式に変更しています。
MarkdownからHTMLへの変換
Markdown形式のテキストをHTMLに変換する際も有用です。
text = "# This is a title"
pattern = r"# (.+)"
replacement = r"\\1
"
new_text = re.sub(pattern, replacement, text)
print(new_text)
この例では、Markdown形式のタイトルをHTML形式に変更しています。
まとめ
前方参照と後方参照は、文字列の検索や置換を行う際に非常に役立つ機能です。日付のフォーマット変更や、MarkdownからHTMLへの変換など、さまざまな応用例でその力を発揮します。
コメント