ユーザが入力した電子メールアドレスを正規表現と照合するプログラムを作成しました。ユーザーが正規表現と一致しない不正確な電子メールを入力すると、電子メールが正しくないことをユーザーに知らせるprintステートメントが実行されます。私がしたいことは、なぜ電子メールが間違っているのか、つまり、ユーザーが入力した電子メールが一致しない正規表現の部分を特定することができるということを伝えることができます。私はこれを行う方法が不明です。文字列のどの部分が正規表現と一致しないのかを調べる
import re
student = []
while True:
email = input("Please enter the email, for eg [email protected]")
if not re.match("^[A-Za-z0-9]{5,25}@{1}[A-Za-z]{5,15}[.]{1}[A-Za-z {3,10}$", email):
print("Sorry incorrect format, please re-enter email")
else:
student.append(email)
print(student)
break
にマッチしますか? –
正規表現は一致するかしないか...グレー領域はありません。コード内の電子メールアドレスを解析し、特定の問題を報告する必要があります。実際には、それはおそらく多くのユーザーを助けてくれません。 –
有効な電子メールアドレスをテストする正規表現では、ドット区切り名、追加記号、複数のセグメント化されたドメイン名など、あらゆる可能性を考慮していません。例えば: 'Ro.Yo.Me + stackoverflow @ ix.netcom.com'は標準で完全に有効ですが、あなたのテストは失敗します。また、式にエラーがあります。最後の文字クラスには閉じ括弧がありません。 –