Pythonの正規表現を使ってメールアドレスを検証する方法
Pythonでは、標準ライブラリの re モジュールを使った正規表現によって、与えられたメールアドレス(メールID)が正しい形式かどうかを簡単に検証できます。以下のコードは、任意のメールアドレスを正規表現でチェックする基本的な例です。
サンプルコード
import re
s = 'manogna.neelam@tutorialspoint.com'
match = re.search(r'\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2}\b', s, re.I)
print(match.group())実行結果
このコードを実行すると、次のような出力が得られます。
manogna.neelam@tutorialspoint.com
正規表現パターンの解説
使用している正規表現パターンは、以下の要素で構成されています。
- [A-Z0-9._%+-]+:メールアドレスのローカル部(「@」より前の部分)に使用できる文字を表します。英数字、ドット、アンダースコア、パーセント、プラス、ハイフンが該当します。
- @:ローカル部とドメイン部を区切る「@」記号そのものです。
- [A-Z0-9.-]+:ドメイン名の部分です。英数字、ドット、ハイフンを許容します。
- \.[A-Z]{2}:トップレベルドメイン(TLD)を表し、「.com」「.jp」のように、ドットの後に2文字以上のアルファベットが続く形を要求します。
また、re.I フラグを指定することで、大文字・小文字を区別せずにマッチングを行っています。これにより、大文字や小文字が混在したメールアドレスでも正しく検証できます。
注意点
上記のパターンは一般的なメールアドレスの検証には十分ですが、RFC 5322 に完全準拠した厳密な検証が必要な場合は、より複雑な正規表現を使用するか、email-validator のような専用ライブラリの利用を検討するとよいでしょう。
-
【Python】正規表現を使って文字列内の単語をマッチ・抽出する方法
次のコードは、指定された文字列の中から「meeting」という単語を抽出します。ここでは肯定の先読み(look-ahead)と肯定の後読み(look-behind)アサーションを使用しています。これにより、単語を囲む文字の存在を条件として考慮しつつ、その文字自体はマッチ結果に含めないようにできます。コード例import re s = https://www.google.com/meeting_agenda_minutes.html result = re.findall(r(?<=[\W_])meeting(?=[\W_]), s) print(result)出力[meeting]パ
-
Pythonの正規表現における修飾子(フラグ)の使い方と機能一覧
Python正規表現の修飾子とはPythonのreモジュールでは、正規表現によるパターンマッチングの挙動を制御するために、さまざまな修飾子(フラグ)を指定することができます。これらの修飾子を使うことで、大文字小文字の区別や改行の扱いなど、マッチングの動作を柔軟に変更できます。以下に、主要な修飾子とその機能を一覧形式で紹介します。1. re.I(re.IGNORECASE)大文字と小文字を区別せずにマッチングを行います。英字の大小を無視したい場合に便利です。2. re.L(re.LOCALE)現在のロケール設定に従って単語を解釈します。このフラグは、アルファベット系のグループ(\w および \W