import re
def extract_emails(text):
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
return re.findall(pattern, text)
text = "大量文本内容,包含邮箱:test@example.com 以及 another123@domain.co.uk等"
emails = extract_emails(text)
print(emails)
预编译正则表达式优化性能简述
- 预编译:使用
re.compile
函数对正则表达式进行预编译,将正则表达式编译成一个正则表达式对象。例如:
email_pattern = re.compile(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b')
- 使用预编译对象:之后在需要匹配的地方,使用预编译得到的对象的
findall
等方法,如:
emails = email_pattern.findall(text)
- 性能优化原理:预编译将正则表达式的解析和编译过程提前,在多次使用相同正则表达式进行匹配时,避免了每次都重新解析和编译正则表达式的开销,从而提高性能,特别是在处理大量文本或多次进行匹配操作时,这种优化效果更明显。