Pythonの正規表現では、.
(ドット)は改行を除く任意の文字にマッチします。しかし、改行を含む任意の文字にマッチさせたい場合はどうすればよいでしょうか。
その答えは、re.DOTALL
フラグを使用するか、パターン内に(?s)
修飾子を含めることです。これにより、.
パターンは改行文字を含む任意の文字にマッチします。
以下に具体的な例を示します。
import re
text = """
abc
123
def
456
"""
# re.DOTALLフラグを使用する例
print(re.findall(r"abc.*123.*def", text, re.DOTALL))
# (?s)修飾子を使用する例
print(re.findall(r"(?s)abc.*123.*def", text))
このコードは、abc
から始まり、123
とdef
を含む任意の文字列にマッチします。re.DOTALL
フラグまたは(?s)
修飾子があるため、.
は改行を含む任意の文字にマッチします。
このように、Pythonの正規表現では、改行を含む任意の文字にマッチさせるための便利な方法が提供されています。これを活用することで、より複雑なテキスト処理を行うことが可能になります。