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']用途に応じてパターンを使い分けることで、さまざまな形式のテキストからメールアドレスを確実に抽出できるようになります。
-
【Python】Tkinterでラベルのテキストを削除する方法をわかりやすく解説
Tkinterは、PythonでGUIベースのアプリケーションを作成・開発するための標準ライブラリです。この記事では、何らかのテキストが表示されているラベルから、そのテキストを削除する方法を解説します。 ラベルからテキストを削除するには、ラベルの表示を切り替えるトリガーとして機能するボタンを作成します。具体的には、config()メソッドを使ってラベルのtext属性を空の文字列に書き換えます。 サンプルコード # Tkinterライブラリをインポート from tkinter import * # tkinterフレームのインスタンスを作成 win = Tk() # ウィンドウのサイズを
-
Pythonでテキストファイルから指定した文字数だけ読み込む方法
Pythonでテキストファイルから指定した文字数だけ読み込む方法Pythonでファイルの内容を読み込むには、ファイルオブジェクトの f.read(size) メソッドを使用します。このメソッドは指定した量のデータを読み込み、文字列として返します。f.read(size) の基本的な動作size は省略可能な数値引数です。その挙動は以下のとおりです。size を省略した場合、または負の値を指定した場合: ファイル全体の内容が読み込まれ、返されます。size に正の数値を指定した場合: 最大で size バイト分のデータが読み込まれ、返されます。ファイルの末尾に達している場合: f.read()