在Python编程中,正则表达式(regex)是强大的工具,能够处理各种复杂的字符串操作.以下是10个常见的正则表达式使用场景,并附上代码示例.
1. 验证电子邮件地址
验证用户输入的电子邮件地址是否符合格式要求.
import re
def validate_email(email):
pattern = r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$"
return re.match(pattern, email) is not None
# 示例
print(validate_email("test@example.com")) # True
print(validate_email("invalid-email")) # False
2. 匹配电话号码
提取或验证电话号码格式,如国际电话格式 +1-800-555-1234
.
def validate_phone(phone):
pattern = r"^\+?\d{1,3}[-.\s]?\(?\d{1,4}\)?[-.\s]?\d{1,4}[-.\s]?\d{1,9}$"
return re.match(pattern, phone) is not None
# 示例
print(validate_phone("+1-800-555-1234")) # True
print(validate_phone("555-1234")) # True
3. 查找所有URL
从文本中提取所有的URL.
def find_urls(text):
pattern = r"https?://[^\s]+"
return re.findall(pattern, text)
# 示例
text = "Check out https://example.com and http://google.com."
print(find_urls(text)) # ['https://example.com', 'http://google.com']
4. 验证日期格式
验证日期是否符合 YYYY-MM-DD
的格式.
def validate_date(date):
pattern = r"^\d{4}-\d{2}-\d{2}$"
return re.match(pattern, date) is not None
# 示例
print(validate_date("2024-09-30")) # True
print(validate_date("30-09-2024")) # False
5. 从字符串中提取所有数字
提取文本中所有的数字.
def extract_numbers(text):
return re.findall(r"\d+", text)
# 示例
text = "I have 3 apples, 4 bananas, and 5 oranges."
print(extract_numbers(text)) # ['3', '4', '5']
6. 替换敏感词汇
使用正则表达式替换文本中的敏感词汇,常用于内容审核.
def extract_numbers(text):
return re.findall(r"\d+", text)
# 示例
text = "I have 3 apples, 4 bananas, and 5 oranges."
print(extract_numbers(text)) # ['3', '4', '5']
7. 提取文件扩展名
从文件名中提取扩展名.
def get_extension(filename):
pattern = r"\.([a-zA-Z0-9]+)$"
match = re.search(pattern, filename)
return match.group(1) if match else None
# 示例
print(get_extension("document.pdf")) # 'pdf'
print(get_extension("archive.tar.gz")) # 'gz'
8. 验证密码强度
使用正则表达式验证密码是否满足复杂性要求,比如至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符.
def validate_password(password):
pattern = r"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$"
return re.match(pattern, password) is not None
# 示例
print(validate_password("StrongPass1!")) # True
print(validate_password("weakpass")) # False
9. 拆分字符串
使用正则表达式按照多个分隔符拆分字符串.
def split_text(text):
pattern = r"[ ,;]+"
return re.split(pattern, text)
# 示例
text = "apple, orange; banana grape"
print(split_text(text)) # ['apple', 'orange', 'banana', 'grape']
10. 删除多余的空格
通过正则表达式删除字符串中的多余空格,只保留一个空格.
def clean_whitespace(text):
pattern = r"\s+"
return re.sub(pattern, " ", text).strip()
# 示例
text = " This is a messy sentence. "
cleaned_text = clean_whitespace(text)
print(cleaned_text) # "This is a messy sentence."
总结
这些正则表达式场景在处理文本时非常常见.掌握它们可以极大提高处理字符串操作的效率,同时也能使代码更加简洁明了.在Python中,正则表达式是不可或缺的工具,熟练运用它们能帮助你解决许多实际问题.
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!
👉Python所有方向的学习路线👈
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)
👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python70个实战练手案例&源码👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉Python大厂面试资料👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
👉Python副业兼职路线&方法👈
学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。
👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取【保证100%免费
】