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

正規表現でメールアドレスを検証するPythonプログラム

文字列として与えられたメールアドレスが有効かどうかを、次の条件に基づいて判定するプログラムを考えてみましょう。

  • 形式は「username@company.domain」(ユーザー名@会社名.ドメイン)であること
  • ユーザー名には英大文字・英小文字、数字、ハイフン(-)、アンダースコア(_)のみ使用可能
  • 会社名には英大文字・英小文字と数字のみ使用可能
  • ドメイン(トップレベルドメイン)には英字のみ使用可能
  • 拡張子(ドメイン部分)の最大長は3文字

このようなパターンの判定には正規表現が最適です。Pythonでは標準ライブラリの re をインポートするだけで正規表現を利用でき、re.match() 関数を使えば文字列が指定したパターンに一致するかどうかを簡単に調べられます。

例えば、入力が s = "popular_website15@comPany.com" の場合、すべての条件を満たしているため出力は True になります。

解決の手順

  1. パターンを定義する:先頭は英数字・ハイフン・アンダースコアのいずれか1文字以上、続いて「@」、その後は英数字からなる会社名、「.」で区切られた長さ1〜3の英字からなるドメインが末尾に来る形にする
  2. パターンが文字列 s に一致すれば True を返す
  3. 一致しなければ False を返す

実装例

以下のコードで実際の動作を確認できます。

import re

def solve(s):
   pat = "^[a-zA-Z0-9-_]+@[a-zA-Z0-9]+\.[a-z]{1,3}$"
   if re.match(pat,s):
      return True
   return False

s = "popular_website15@comPany.com"
print(solve(s))

パターンの解説

  • ^ :文字列の先頭を表す
  • [a-zA-Z0-9-_]+ :ユーザー名部分(英数字・ハイフン・アンダースコアの1文字以上の繰り返し)
  • @ :区切り記号のアットマーク
  • [a-zA-Z0-9]+ :会社名部分(英数字の1文字以上の繰り返し)
  • \. :ドット(ピリオド)
  • [a-z]{1,3} :ドメイン部分(英小文字1〜3文字)
  • $ :文字列の末尾を表す

入力

"popular_website15@comPany.com"

出力

True

  1. Pythonでカレンダーを作る方法!calendarモジュールの基本と使い方を解説

    Pythonには、カレンダーを扱うためのcalendarという標準モジュールが組み込まれています。この記事では、calendarモジュールの基本的な使い方について解説していきます。calendarモジュールでは、1週間は月曜日から始まり日曜日に終わります。また、このモジュールはグレゴリオ暦(西暦)に準拠しています。それでは、calendarモジュールの便利なメソッドをいくつか見ていきましょう。年間カレンダーを取得する特定の年のカレンダー全体を取得したい場合は、calendar.calendar(year)クラスのインスタンスを作成し、それを出力します。以下に具体例を示します。コード例# cal

  2. Pythonでクイックソートを実装する方法|初心者向けにサンプルコードを徹底解説

    この記事では、クイックソート(QuickSort)のアルゴリズムを使って配列を並べ替えるPythonプログラムの実装方法を、初心者にもわかりやすく解説します。 問題の定義 問題: 与えられた配列を、クイックソートの考え方を利用して昇順にソートすることです。 クイックソートは「分割統治法」と呼ばれる手法に基づく高速なソートアルゴリズムです。まず配列を基準値(ピボット)を境目に2つの部分に分割し、それぞれの部分配列を再帰的にソートしていくことで、最終的に全体が整列された配列を得られます。 クイックソートの仕組み 処理の流れは以下のとおりです。 配列からピボット(基準となる要素)を選びます。こ