Pythonで文字列内のパターンを検索する総合ガイド

この記事では、Pythonで文字列内で特定のパターンを検索する方法について解説します。具体的なコード例とその解説、応用例を含めています。

目次

基本的な検索方法

Pythonには標準で文字列を操作するための多くのメソッドがあります。ここでは基本的なパターン検索に使用する`find`メソッドと`index`メソッドについて説明します。

findメソッド

`s.find(t)`という形で、文字列`s`内に部分文字列`t`が存在する場合、その開始位置を返します。存在しない場合は-1を返します。

text = "Pythonは多機能なプログラミング言語です"
result = text.find("多機能")
print(result)  # 6が出力される

indexメソッド

`s.index(t)`も`s.find(t)`と同様に部分文字列`t`の開始位置を返しますが、存在しない場合はエラーが発生します。

text = "Pythonは多機能なプログラミング言語です"
result = text.index("Ruby")  # ValueErrorが発生する
print(result)

正規表現を使用した高度な検索

Pythonの`re`モジュールを使用すると、より複雑な検索が可能です。正規表現は高度なテキストマッチングを行うための言語です。

基本的な正規表現の使用

`re.search`関数を使うと、最初にマッチした部分の位置情報を取得できます。

import re

text = "Pythonは多機能なプログラミング言語です"
result = re.search(r"多機能", text)
print(result.start())  # 6が出力される

複数のパターンの検索

`re.findall`を使用すると、マッチするすべての部分文字列をリストとして返します。

result = re.findall(r"プロ|多機能", text)
print(result)  # ['多機能', 'プロ']が出力される

応用例

応用例1:メールアドレスの抽出

文章からメールアドレスを抽出する場合のコード例です。

email_text = "問い合わせは[email protected]または[email protected]まで"
email_pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"
emails = re.findall(email_pattern, email_text)
print(emails)  # ['[email protected]', '[email protected]']が出力される

応用例2:日付の抽出

文章から日付形式(YYYY/MM/DD)を抽出するコード例です。

date_text = "2021/07/15から2023/10/17まで"
date_pattern = r"\d{4}/\d{2}/\d{2}"
dates = re.findall(date_pattern, date_text)
print(dates)  # ['2021/07/15', '2023/10/17']が出力される

まとめ

Pythonには様々な方法で文字列内のパターンを検索する機能があります。`find`や`index`メソッドで基本的な検索ができ、`re`モジュールで高度な検索が可能です。具体的な応用例を通じて、この機能の有用性を理解できたでしょう。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次