正则表达式是处理字符串的强大工具,它通过特定模式匹配字符串中的字符组合。在 Python3 中,
re模块提供了正则表达式的全部功能。本文将从基础到进阶,详解 Python3 正则表达式的使用方法。
正则表达式(Regular Expression)是由普通字符(如字母、数字)和特殊字符(元字符)组成的字符串模式,用于匹配、查找或替换文本中的特定内容。
Python 通过内置的re模块操作正则表达式,使用前需导入:
元字符是正则表达式的核心,用于定义匹配规则。以下是最常用的元字符:
- 从字符串开头匹配模式,若匹配成功返回
Match对象,否则返回None。
- 仅检查字符串开头是否符合模式。
- 在整个字符串中查找第一个匹配项,返回
Match对象或None。
- 与
match的区别:search不限制从开头匹配。
- 查找字符串中所有匹配的子串,返回列表(无匹配则返回空列表)。
- 替换字符串中所有匹配的子串,返回替换后的新字符串。
repl:替换的内容(可为字符串或函数)。
使用()定义分组,通过Match.group(n)获取第 n 个分组的内容(group(0)表示整个匹配项)。
- 贪婪匹配(默认):尽可能匹配最长的字符串(如
*、+)。
- 非贪婪匹配:在元字符后加
?,尽可能匹配最短的字符串(如*?、+?)。
通过标志位修改正则匹配的行为,常用标志:
re.I:忽略大小写(IGNORECASE)
re.S:使.匹配包括换行符在内的所有字符(DOTALL)
re.M:使^和$匹配每行的开头和结尾(MULTILINE)
import re
def is_valid_phone(phone):
pattern = r"^1[3-9]\d{9}$"
import re
url = "https://blog.example.com/path?query=1"
pattern = r"://([\w\-\.]+)/"
Python 正则表达式通过re模块实现,核心在于掌握元字符和模式规则。关键要点:
- 基础元字符(
*、+、[]等)定义匹配逻辑;
match/search用于查找匹配,findall获取所有结果,sub用于替换;
- 分组可捕获子串,非贪婪模式解决过度匹配问题;
- 标志位可灵活调整匹配行为(如忽略大小写)。
熟练运用正则表达式,能极大提升字符串处理效率,适用于数据清洗、格式验证、文本解析等场景。