Python正则表达式完全解析:match、search、sub与findall

0 下载量 193 浏览量 更新于2024-09-01 收藏 205KB PDF 举报
"这篇资源是关于Python中正则表达式的详解,主要介绍了四个核心的正则函数:re.match()、re.search()、re.sub()和findall(),以及它们的应用实例。" 正则表达式是处理字符串的强大工具,特别是在Python中,通过内置的re模块,我们可以方便地进行字符串匹配、查找和替换等操作。正则表达式允许我们构建复杂规则,以匹配特定模式的文本。 首先,`re.match()`方法用于从字符串的开始位置检查是否匹配某个模式。如果匹配成功,它将返回一个匹配对象,否则返回None。例如,在"python.org"中,如果试图匹配以"python"开头的字符串,`re.match("python", "python.org")`将返回一个匹配对象,调用其`group()`方法可获取匹配的字符串。 其次,`re.search()`函数不同于`match()`,它会在整个字符串中扫描,寻找第一个匹配的模式,而不是仅限于开始位置。如果找到匹配,它同样会返回一个匹配对象;若未找到,返回None。如在"阅读次数为9999"中,`re.search(r"\d+", "阅读次数为9999")`将找到并返回数字9999的匹配对象。 再者,`re.sub()`函数用于替换字符串中符合正则表达式规则的部分。例如,要将字符串"/深圳/"中的空格和斜线替换为空,可以使用`city = re.sub(r'[/\s]', "", "/深圳/")`,结果将得到字符串"深圳"。 最后,`findall()`函数能找出所有匹配的子串,并以列表形式返回。在字符串"9python35C++"中查找所有数字,`num = re.findall(r'\d+', test_str)`将返回列表`['9', '35']`,包含所有匹配的整数。 以上只是Python正则表达式的基础应用,实际上re模块还提供了许多其他功能,如`re.compile()`用于编译正则表达式,提高后续匹配的速度;`re.split()`用于按照正则表达式分割字符串;还有`re.findall()`的变体`re.finditer()`,它返回一个迭代器,每次迭代产生一个匹配对象。正则表达式的深入学习涵盖了更复杂的模式,如贪婪与非贪婪匹配、分组、后向引用等,对于数据处理和文本分析有着不可或缺的作用。