在Python中,正则表达式获取字符串后的所有文本
我有这样一个字符串:
Email: promo@elysianrealestate.com
我想从中提取出电子邮件地址:
我试过这个方法
Email:.*
但是我得到的是整个字符串,而不是仅仅电子邮件
请帮帮我
我正在用Python的Scrapy框架
4 个回答
0
只要你知道“:”这个符号总是把“Email”和实际的邮箱地址分开,那你可以试试这样做(比如 s = "Email: promo@elysianrealestate.com"):
emailAddr = s.split(":")[1].strip()
如果你还需要处理“.com”后面的文字,可以再用一个空格“ ”来分开,然后取列表中的第一个(也就是第0个)元素。
emailAddr = emailAddr.split(" ")[0]
0
你需要创建一个组来标记你想要捕捉的文本。为此,可以尝试用括号把模式包起来:
r'Email:\s+(.+)'
2
这段代码可以帮助你抓取电子邮件地址,它确保你只抓取格式正确的电子邮件:
Email:\s+(\b[A-Za-z0-9(._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b)
这是我测试它的方式:
>>> import re
>>> txt = """
I have this string:
Email: promo@elysianrealestate.com foo bar baz
I want to get the email address:"""
>>> re.findall(r"""
Email:\s+
(\b # edge of first part
[A-Za-z0-9(._%+-]+ # name, can be dotted
@ # @
[A-Za-z0-9.-]+ # domain, e.g. something.something
\. # .
[A-Za-z]{2,4}\b) # any lettered end, 2 to 4 letters long
""", txt, re.VERBOSE)
['promo@elysianrealestate.com']
2