0

現在、次のコードを使用しています。

regexp = re.compile(r'[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}', re.IGNORECASE)
email = regexp.findall(stext)
if email:
    email = email[0]

stextただし、電子メール以外のテキスト(たとえば、)が含まれている場合でも機能しますsome text email@example.com some other textstextが含まれているかどうかを確認したい場合email@example.com おそらく、先頭または/および末尾にスペースがあり、他の文字はありません)。

PS。mail.is_email_validまた、おそらく正規表現の代わりに使用する必要があると思います。これにより、のような長いドメインやのようなローカルドメインをサポートできるようになります。.museam.рф

4

3 に答える 3

3

先頭に ^ を追加する必要があります。これは、「ここからテキストが始まる」ことを意味し、最後に $ を追加する必要があります。

それは次のようになります:

r'^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$'

于 2013-03-22T19:06:21.353 に答える
1

次の正規表現を使用します。

\s?[A-Z0-9_-+%]+@[A-Z0-9_-+%]+\.[A-Z0-9]\s?
于 2013-03-22T19:20:23.487 に答える
0

メールの前後の単語境界に \b を使用しないのはなぜですか?

于 2013-03-22T20:05:22.583 に答える