この記事では、Pythonの正規表現モジュールである`re`内の`match()`と`search()`メソッドの違いについて詳しく説明します。具体的なコード例、その詳細解説、さらに応用例も2つ以上取り上げます。
目次
はじめに:正規表現とは
正規表現(Regular Expression)とは、テキストデータに対する複雑な検索や置換を行うためのパターンです。Pythonでは`re`モジュールを用いて正規表現を処理できます。
`match()`と`search()`の基本的な違い
`match()`メソッドは文字列の先頭からパターンとマッチングを試みます。対照的に、`search()`メソッドは文字列全体を対象にマッチングを試みます。
基本的なコード例
以下に基本的なコード例を示します。
import re
# match()の例
m1 = re.match("hello", "hello world")
print(m1.group()) # 出力:hello
# search()の例
m2 = re.search("world", "hello world")
print(m2.group()) # 出力:world
詳細解説
`match()`は”hello world”の最初の文字から”hello”とマッチングを始めます。一方で`search()`は”hello world”のどこかに”world”が存在するか調べます。このように動作が異なります。
応用例1:複数行テキストでの使用
`match()`と`search()`は複数行のテキストでも使用できますが、その動作には違いがあります。
コード例と解説
# 複数行のテキスト
text = """line1
line2
line3"""
# match()の例
m1 = re.match("line1", text)
print(m1.group()) # 出力:line1
# search()の例
m2 = re.search("line2", text)
print(m2.group()) # 出力:line2
`match()`はテキストの最初、”line1″とマッチングします。一方、`search()`は”line2″とマッチングしますが、この”line2″はテキストの途中にあります。
応用例2:特定の単語の出現位置を探す
コード例と解説
text = "The apple is red and the banana is yellow."
# search()の例
m = re.search(r"\bapple\b", text)
if m:
print(m.start(), m.end()) # 出力: 4 9
この例では、`search()`を使用して”apple”という単語がテキスト内のどこに位置するかを出力しています。
まとめ
`match()`は文字列の先頭からマッチングを試みるのに対し、`search()`は文字列全体でマッチングを試みます。それぞれのメソッドがどのようなケースで有用か、具体的なコード例とともに解説しました。
コメント