Pythonでの`match()`と`search()`の違いと応用例

この記事では、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()`は文字列全体でマッチングを試みます。それぞれのメソッドがどのようなケースで有用か、具体的なコード例とともに解説しました。

コメント

コメントする

目次