Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの正規表現でテキストからメールアドレスを抽出する方法

Pythonの標準ライブラリ re モジュールを使うと、文字列の中からメールアドレス(メールID)を簡単に抽出できます。findall() メソッドに適切な正規表現パターンを渡すことで、長いテキストからも該当するメールアドレスだけをリスト形式で取得できます。

サンプルコード

以下のコードは、Pythonの正規表現を使って、与えられた文字列からメールIDを抽出する例です。

import re

s = 'manogna@tutorialspoint.com56'
result = re.findall(r'[a-zA-Z0-9]\S*@\S*[a-zA-Z]', s)
print(result)

実行結果

このコードを実行すると、次のような出力が得られます。

['manogna@tutorialspoint.com']

正規表現パターンの解説

使用しているパターン [a-zA-Z0-9]\S*@\S*[a-zA-Z] の各要素は、次のような意味を持っています。

  • [a-zA-Z0-9]:メールアドレスの先頭は英数字であることを保証します。
  • \S*:「@」の直前まで、空白以外の文字が0個以上続くことを表します。
  • @:メールアドレスに必ず含まれるアットマークそのものです。
  • \S*:「@」の後に空白以外の文字が0個以上続くことを表します。
  • [a-zA-Z]:末尾(ドメイン部分)が英字で終わることを保証し、余計な数字や記号を除外します。

この例では、元の文字列の末尾に数字の「56」が付いていますが、パターンの最後が [a-zA-Z] で終わるよう指定されているため、「manogna@tutorialspoint.com」だけが正確に抽出され、余分な数字は結果に含まれません。

補足:より厳密な抽出が必要な場合

上記のパターンはシンプルで汎用的ですが、実務ではRFCの仕様に近い、より厳密なパターンを使うこともあります。たとえば次のように、ドメイン部分にドットを明示的に含める書き方もあります。

import re

s = 'お問い合わせは manogna@tutorialspoint.com まで'
result = re.findall(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2}', s)
print(result)  # ['manogna@tutorialspoint.com']

用途に応じてパターンを使い分けることで、さまざまな形式のテキストからメールアドレスを確実に抽出できるようになります。

  1. 【Python】Tkinterでラベルのテキストを削除する方法をわかりやすく解説

    Tkinterは、PythonでGUIベースのアプリケーションを作成・開発するための標準ライブラリです。この記事では、何らかのテキストが表示されているラベルから、そのテキストを削除する方法を解説します。 ラベルからテキストを削除するには、ラベルの表示を切り替えるトリガーとして機能するボタンを作成します。具体的には、config()メソッドを使ってラベルのtext属性を空の文字列に書き換えます。 サンプルコード # Tkinterライブラリをインポート from tkinter import * # tkinterフレームのインスタンスを作成 win = Tk() # ウィンドウのサイズを

  2. Pythonでテキストファイルから指定した文字数だけ読み込む方法

    Pythonでテキストファイルから指定した文字数だけ読み込む方法Pythonでファイルの内容を読み込むには、ファイルオブジェクトの f.read(size) メソッドを使用します。このメソッドは指定した量のデータを読み込み、文字列として返します。f.read(size) の基本的な動作size は省略可能な数値引数です。その挙動は以下のとおりです。size を省略した場合、または負の値を指定した場合: ファイル全体の内容が読み込まれ、返されます。size に正の数値を指定した場合: 最大で size バイト分のデータが読み込まれ、返されます。ファイルの末尾に達している場合: f.read()