Python 正则表达式-提取内部单词<&燃气轮机;括号
我正在尝试从字符串中提取电子邮件地址,如Python 正则表达式-提取内部单词<&燃气轮机;括号,python,regex,Python,Regex,我正在尝试从字符串中提取电子邮件地址,如 John Smith 我只需要括号中的电子邮件地址 这是我到目前为止尝试过的,但我对正则表达式不是很好,而且它似乎不起作用,有人能帮我吗 import re sender = str(message.sender) p = re.search(r"\<(\w+)\>", sender) logging.info(p.group(1)) 重新导入 sender=str(message.sender) p=重新搜索(r“\”,发件人) 日志记录
John Smith
我只需要<>括号中的电子邮件地址
这是我到目前为止尝试过的,但我对正则表达式不是很好,而且它似乎不起作用,有人能帮我吗
import re
sender = str(message.sender)
p = re.search(r"\<(\w+)\>", sender)
logging.info(p.group(1))
重新导入
sender=str(message.sender)
p=重新搜索(r“\”,发件人)
日志记录信息(p.group(1))
您可以尝试以下方法:
import re
s = "John Smith <jsmith@email.com>"
email = re.findall('<(.*?)>', s)[0]
或者,更具体的电子邮件解决方案:
email = re.findall('(?<=\<)\w+@[a-zA-Z]+\.[a-z]+(?=\>)', s)[0]
当前您的正则表达式是:
“\”
您实际上不需要转义
,因此它变成:“”
\w
匹配字母、数字和下面的工作'
。电子邮件地址中还有其他字符
您有两种选择:要么接受
中带有类似于“
的正则表达式的任何内容,要么实际解析电子邮件地址
一个简单的正则表达式是”
(非空白字符后跟@
,后跟非空白字符)
限制我们使用更常用的字符,我们可以这样写:
“
这仍然允许使用某些非法电子邮件地址,因为我将其保持得相当简单。使用负数字符集:
import re
s = "John Smith <jsmith@email.com>"
email = re.findall('<([^>])>', s)[0]
重新导入
s=“约翰·史密斯”
email=re.findall(']>',s[0]
它匹配任何非
字符的内容,因此所有内容都在角括号中。您可以使用:re.search(r“]+)>”,sender)
试试这个/]*)/如果您只想要电子邮件(而不是
),您可以将@anubhava的regex修改为(?)
'jsmith@email.com'
import re
s = "John Smith <jsmith@email.com>"
email = re.findall('<([^>])>', s)[0]