正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
邮箱的正则表达式为:
1 |
"([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)" |
代码(抓取新浪网):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import requests, re # regex = r"([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)" # regex = r"([a-zA-Z0-9_.+-]+@[a-pr-zA-PRZ0-9-]+\.[a-zA-Z0-9-.]+)" # 这个正则表达式过滤掉了qq邮箱 regex = r"([a-zA-Z0-9_.+-]+@[a-fh-pr-zA-FH-PRZ0-9-]+\.[a-zA-Z0-9-.]+)" # 这个正则表达式过滤掉了谷歌邮箱和QQ邮箱 url = 'http://www.sina.com.cn/' html = requests.get(url).text emails = re.findall(regex, html) i = 0 for email in emails: i += 1 if i < 16 : print("{} :{}".format(i, email)) |
结果: