ds data-processing preprocessing
layout: page title: メールアドレスの正規表現とは?なぜ難しいのかを整理【DS検定】 permalink: /ds/regular-expression-email/ tags: [ds, preprocessing, cheatsheet] ————————————-
まず結論
メールアドレスの正規表現は「文字列の構造」を確認するためのパターンですが、完全に正しいメールアドレスを保証することはできません。 DS検定では、「正規表現で何が保証できて、何が保証できないか」を判断できるかが問われます。
直感的な説明
メールアドレスは、
のように
ユーザー名 @ ドメイン名
という構造をしています。
電話番号や郵便番号と違い、
- 英字
- 数字
- 記号
が混ざります。
そのため、正規表現も一気に複雑になります。
ここで大切なのは、
正規表現は「それっぽい形」を確認しているだけ
という理解です。
定義・仕組み
よくある簡易的なメールアドレスの正規表現は次の形です。
^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}$
意味を分解すると、
- ^ :先頭
- [A-Za-z0-9._%+-]+ :英数字や一部記号が1回以上
- @ :アットマーク
- [A-Za-z0-9.-]+ :ドメイン部分
- . :ドット(.)そのもの
- [A-Za-z]{2,} :2文字以上の英字
- $ :末尾
ポイントは、
-
- は「1回以上」
- [] は「いずれか1文字」
- . はそのままだと「任意の1文字」になるため、. と書く
という点です。
どんな場面で使う?
使う場面
- 入力フォームの形式チェック
- 不正データの簡易除外
- データ前処理での基本確認
使うと誤解しやすい場面
- 実在するメールアドレスかどうかを判定できると思う
- RFC仕様まで完全対応していると考える
DS検定では、 「この正規表現で正しいメールアドレスのみを保証できる」と書かれていたら誤りです。
よくある誤解・混同
① . の意味を誤解する
. は「任意の1文字」です。
ドットを表すには . と書く必要があります。
選択肢で「. はドットを意味する」と書かれていたら注意です。
② + と * の違い
-
- :1回以上
-
- :0回以上
- を使うことで「最低1文字必要」であることを表しています。
③ [] の意味を誤解する
[A-Za-z] は「英字1文字」を意味します。
「文字列全体が英字」とは限りません。
まとめ(試験直前用)
- メール正規表現は構造チェックである
- . は任意の1文字、ドットは .
-
- は1回以上、* は0回以上
- 正規表現では実在性は保証できない
DS検定では、 「その正規表現が何を保証していないか」を考えることが重要です。
対応スキル項目(データエンジニアリング力シート)
データ収集・加工
データ前処理
★ データの前処理(クレンジング・加工)ができる
🔗 関連記事
- アノテーションとは?(AI学習データを作る重要な作業)【DS検定】
- バッチ処理とストリーム処理の違いとは?【DS検定リテラシー】
- データ拡張(Data Augmentation)とは?画像AIの学習データを増やす方法【DS検定】
- データ抽出と集計の違いとは?(SQL・BIで混同しやすい操作)【DS検定】
- データトランスフォーメーションとは?(非構造化データの変換)【DS検定】