Pythonで文字列のパターンマッチングを行う方法

この記事では、Pythonでの文字列のパターンマッチングについて詳しく解説します。具体的なコード例とその解説、さらには応用例まで含めています。
目次

Pythonでの文字列のパターンマッチングとは

文字列のパターンマッチングは、特定の文字列が与えられたテキストデータ内に存在するか、どの位置に存在するかを調べるテクニックです。Pythonでよく使われるライブラリは`re`(正規表現)です。

基本的な使い方

`sCode` import re # “Python”という文字列を探す result = re.search(‘Python’, ‘I love Python.’) if result: print(“見つかりました”) else: print(“見つかりませんでした”)
ここで、`re.search`関数はテキスト内で指定したパターンが見つかればマッチオブジェクトを、見つからなければ`None`を返します。

基本的な正規表現

メタキャラクタ

正規表現には、特定の文字列だけでなく、特定の形式に一致する文字列を検索できるメタキャラクタと呼ばれる文字があります。
  • . (ドット): 任意の一文字
  • * (アスタリスク): 直前の文字が0回以上繰り返される
  • + (プラス): 直前の文字が1回以上繰り返される

メタキャラクタの例

result = re.findall('a.b', 'acd acbd asbb adb')
print(result)
このコードは`a`と`b`の間に任意の一文字が入っている文字列を検索します。出力は`[‘acb’, ‘asb’, ‘adb’]`となります。

応用例

電話番号の抽出

電話番号は特定の形式で記述されることが多いです。例えば、「XXX-XXXX-XXXX」といった形です。
pattern = r'\d{3}-\d{4}-\d{4}'
text = "私の電話番号は080-1111-2222です。"
result = re.search(pattern, text)
if result:
    print(f"電話番号:{result.group()}")
このコードでは、正規表現を用いて電話番号を抽出しています。

メールアドレスの検証

正規表現はメールアドレスの形式が正しいかどうかを検証する際にも有用です。
pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
text = "私のメールアドレスはexample@example.comです。"
result = re.search(pattern, text)
if result:
    print(f"メールアドレス:{result.group()}")
この例では、メールアドレスの正規表現を用いて、テキストからメールアドレスを抽出しています。

まとめ

Pythonの`re`ライブラリを用いて、文字列のパターンマッチングの基本から応用までを学びました。これを機に、Pythonでのテキスト処理能力を高めてみてはいかがでしょうか。

コメント

コメントする