Python字符串匹配主要靠re模块,核心是编写正确pattern并调用对应函数:match()从开头匹配,search()全局搜索;findall()返回匹配字符串列表,finditer()返回含位置等信息的Match对象迭代器;sub()替换、split()分割;常用pattern建议compile编译提升效率,括号实现分组提取。

Python 中匹配字符串主要靠正则表达式(re 模块),它能灵活处理查找、提取、替换等任务。核心是写对模式(pattern),再用对应函数执行操作。
基础匹配:re.match() 和 re.search()
re.match() 从字符串开头开始匹配,不成功就返回 None;re.search() 在整个字符串中搜索第一个符合的位置。
- 想确认字符串是否“以某内容开头”,用
match() - 只想知道“有没有出现过”,用
search()
例如:re.match(r"abc", "abcdef") 成功,但 re.match(r"bc", "abcdef") 失败;而 re.search(r"bc", "abcdef") 成功。
提取内容:re.findall() 和 re.finditer()
findall() 返回所有匹配的字符串组成的列表;finditer() 返回迭代器,每个元素是 Match 对象,可调用 .group()、.span() 等方法获取细节。
立即学习“Python免费学习笔记(深入)”;
- 要简单拿到所有匹配文本,用
findall() - 需要位置、分组或上下文信息时,用
finditer()
例如:re.findall(r"\d+", "age: 25, score: 98") 返回 ["25", "98"]。
替换与分割:re.sub() 和 re.split()
sub(pattern, repl, string) 把匹配部分替换成指定内容;split(pattern, string) 按匹配结果切分字符串。
-
re.sub(r"\s+", " ", text)可把多个空白字符压缩成单个空格 -
re.split(r"[,.!?]+", text)能按多种标点拆分句子
进阶技巧:编译模式和分组
频繁使用的正则建议先用 re.compile() 编译,提升效率;用括号 () 创建捕获组,方便提取子内容。
pattern = re.compile(r"(\d{4})-(\d{2})-(\d{2})")m = pattern.search("Today is 2024-05-20")-
m.group(1)得到"2024",m.groups()得到元组("2024", "05", "20")











