我正在尝试从字符串中提取多封电子邮件。我正在使用这个正则表达式:
re.findall(r'[\w\.-]+@[\w\.-]+(?:\.[\w]+)+', text)
它可以正常工作,但有时在文本中,具有相同域的电子邮件名称在花括号中分组:
{annie,bonnie}@gmail.com
所以我的问题是如何正确地解析它并将其提取为单独的电子邮件:
annie@gmail.com, bonnie@gmail.com
我试图修改正则表达式以考虑括号和逗号,然后是简单的函数,但在这种情况下,我从字符串中得到了很多垃圾
谢谢你的帮助
Tags:
你可以用
见regex demo详细信息:
(?:{([^{}]*)}|\b\w[\w.-]*)
-非捕获组匹配:{([^{}]*)}
-a{
,然后组1捕获除{
和}
之外的任何零个或多个字符,然后a}
|
-或\b\w[\w.-]*
-一个单词边界(它将使匹配更有效)、一个单词字符,然后是零个或多个单词、点或连字符(@[\w.-]+\.\w+)
-第2组:a@
,一个或多个单词、点或连字符,然后a.
和一个或多个单词字符李>见a Python demo:
逻辑是
{...}
在@
前面的电子邮件,同时将大括号内的内容捕获到组1中,@...
捕获到组2中您可以将
re.findall
与列表一起使用:这张照片是:
相关问题 更多 >
编程相关推荐