一行中多个电子邮件地址的正则表达式

Regex for multiple email addresses in one line

我目前有这个正则表达式:

/\w+@\w+\.\w+/

它非常适合像这样的字符串:

foo@bar.com, bar@foo.com, far@boo.com

但是,它不适用于在“@”前后有两个句点的电子邮件,例如:

foo.bar@bar.edu.fr

如何修改正则表达式以使其也适用于第二个字符串?

谢谢! :)

这并不奇怪,因为您已经在正则表达式中硬编码了一个句点。使用 \S+ 匹配任何非空白字符:

>>> re.findall(r"\S+@\S+", "foo.bar@bar.edu.fr")
['foo.bar@bar.edu.fr']

使用字符 class 代替 \w 并在其中添加 .。像这样:

/^[a-zA-Z0-9_.]+@[a-zA-Z0-9_.]+$/

Online Demo