正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。正则表达式在文本搜索、替换、验证等场景中非常有用。
.
(匹配任意单个字符)、*
(匹配前面的元素零次或多次)、+
(匹配前面的元素一次或多次)等。[abc]
(匹配方括号内的任意字符)、\d
(匹配数字)等。{n}
(精确匹配n次)、{n,}
(至少匹配n次)、{n,m}
(至少n次,至多m次)等。()
来创建一个分组,并可以捕获匹配的文本。^
(匹配字符串开头)、$
(匹配字符串结尾)等。问题:正则表达式查询效率低下,尤其是在处理大数据量时。
原因:
解决方法:
.*
这样的贪婪量词,改用非贪婪匹配 .*?
。import re
# 预编译正则表达式以提高效率
pattern = re.compile(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b')
# 待匹配的文本
text = """
Contact us at support@example.com or sales@example.org.
For more info, visit our website!
"""
# 查找所有匹配的电子邮件地址
matches = pattern.findall(text)
print(matches) # 输出: ['support@example.com', 'sales@example.org']
在这个例子中,我们使用了预编译的正则表达式来高效地查找文本中的所有电子邮件地址。
领取专属 10元无门槛券
手把手带您无忧上云