python 中如何匹配字符串

15次阅读

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

python 中如何匹配字符串

Python 中匹配字符串主要靠正则表达式re 模块),它能灵活处理查找、提取、替换等任务。核心是写对模式(pattern),再用对应函数执行操作。

基础匹配:re.match() 和 re.search()

re.match() 从字符串开头开始匹配,不成功就返回 Nonere.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")
text=ZqhQzanResources