MST

星途 面试题库

面试题:Python正则表达式优化之基础应用

在Python中,给定一个包含大量文本的字符串,需要从中提取所有符合邮箱格式的字符串。请写出使用正则表达式实现该功能的代码,并简述如何通过预编译正则表达式来优化性能。
14.4万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
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)

预编译正则表达式优化性能简述

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