正则表达式是python中处理字符串模式匹配、搜索与替换的核心工具,re模块提供compile、match、search、findall、sub等方法分别实现预编译、开头匹配、全局查找、批量提取和替换功能。

如果您希望在Python中对字符串进行模式匹配、搜索、替换等操作,正则表达式是不可或缺的工具。re模块提供了完整的正则表达式支持,以下是其常见用法的详细解析:
一、编译正则表达式模式
使用re.compile()可将正则表达式字符串预编译为Pattern对象,提升重复使用时的匹配效率,并支持复用同一模式进行多次操作。
1、导入re模块:import re
2、定义正则表达式字符串,例如匹配连续3位数字:pattern_str = r'\d{3}'
立即学习“Python免费学习笔记(深入)”;
3、调用re.compile()生成Pattern对象:pattern = re.compile(pattern_str)
二、基础匹配方法:re.match()
re.match()仅从字符串起始位置尝试匹配,若开头不满足模式则立即返回None,适用于验证字符串是否以特定结构开头。
1、准备待匹配字符串:text = '123abc456'
2、使用re.match()尝试匹配:result = re.match(r'\d{3}', text)
3、检查匹配结果是否存在:if result: print(result.group())
三、全局搜索方法:re.search()
re.search()扫描整个字符串,返回第一个成功匹配的Match对象,不局限于开头,适用于定位任意位置的目标子串。
1、准备含目标内容的字符串:text = 'abc123def456'
2、执行非锚定搜索:result = re.search(r'\d{3}', text)
3、提取匹配内容:print(result.group() if result else '未找到')
四、查找全部匹配:re.findall()
re.findall()返回所有非重叠匹配项组成的列表,适合批量提取符合模式的子串,结果为纯字符串列表,无Match对象开销。
1、构造含多个匹配项的文本:text = 'phone: 123, code: 456, id: 789'
2、调用findall获取全部三位数字:matches = re.findall(r'\d{3}', text)
3、输出结果:print(matches) # ['123', '456', '789']
五、字符串替换操作:re.sub()
re.sub()依据正则表达式匹配结果,将对应部分替换为指定字符串,支持字面替换与函数式动态替换。
1、定义原始字符串与替换目标:text = 'price: $100 and $250'
2、使用re.sub()将美元金额统一替换为'***':new_text = re.sub(r'\$\d+', '***', text)
3、查看替换后结果:print(new_text) # 'price: *** and ***'










