Python内置模块之re库,一文搞定正则表达式的初阶用法

Python内置模块之re库,一文搞定正则表达式的初阶用法
最新回答
夙词欢

2026-03-07 03:26:09

Python内置模块re库是处理正则表达式的标准库,支持字符串匹配、搜索、替换、分割等操作,其初阶用法涵盖基础语法、常用函数及面向对象写法。

正则表达式基础语法

正则表达式由字符和操作符构成,初阶需掌握以下内容:

  • 原生字符串:在字符串前加r,避免转义字符冲突。例如:# 不使用原生字符串的正则表达式 ""# 使用原生字符串的正则表达式 r""
  • 基础操作符:如.匹配任意字符,*匹配前一个字符零次或多次,+匹配一次或多次,?匹配零次或一次等。

re库核心函数1. re.search
  • 功能:在字符串中搜索第一个匹配正则表达式的位置,返回match对象。
  • 原型:re.search(pattern, string, flags=0)
  • 示例:import remy_str = '梦想橡皮擦 good good'pattern = r'橡皮擦'ret = re.search(pattern, my_str)print(ret) # 输出: <re.Match object; span=(2,5), match='橡皮擦'>
  • flags参数

    re.I:忽略大小写。

    re.M:多行模式,^匹配每行开头。

    re.S:.匹配所有字符(包括换行符)。

2. re.match
  • 功能:从字符串开头匹配正则表达式,返回match对象,未匹配则返回None。
  • 原型:re.match(pattern, string, flags=0)
  • 示例:import remy_str = '梦想橡皮擦 good good'pattern = r'梦' # 匹配成功ret = re.match(pattern, my_str)if ret: print(ret.group(0)) # 输出: 梦
3. re.findall
  • 功能:返回所有匹配的字符串列表。
  • 原型:re.findall(pattern, string, flags=0)
  • 示例:import remy_str = '梦想橡皮擦 good good'pattern = r'good'ret = re.findall(pattern, my_str)print(ret) # 输出: ['good', 'good']
4. re.split
  • 功能:按正则表达式匹配结果分割字符串,返回列表。
  • 原型:re.split(pattern, string, maxsplit=0, flags=0)
  • 示例:import remy_str = '1梦想橡皮擦1good1good1'pattern = r'd'ret = re.split(pattern, my_str)print(ret) # 输出: ['', '梦想橡皮擦', 'good', 'good', '']
  • 注意:若匹配字符在开头或结尾,列表首尾会多出空字符串。
5. re.finditer
  • 功能:返回匹配结果的迭代器,每个元素为match对象。
  • 原型:re.finditer(pattern, string, flags=0)
  • 示例:import remy_str = '1梦想橡皮擦1good1good1'pattern = r'good'ret = re.finditer(pattern, my_str)for match in ret: print(match.group(0)) # 输出: good good
6. re.sub
  • 功能:替换匹配的字符串,返回新字符串。
  • 原型:re.sub(pattern, repl, string, count=0, flags=0)
  • 示例:import remy_str = '1梦想橡皮擦1good1good1'pattern = r'good'ret = re.sub(pattern, 'nice', my_str)print(ret) # 输出: 1梦想橡皮擦1nice1nice1
面向对象写法

通过re.compile编译正则表达式,生成正则对象,可重复使用。

  • 原型:regex = re.compile(pattern, flags=0)
  • 示例:import remy_str = '1梦想橡皮擦1good1good1'regex = re.compile(r'good')ret = regex.sub('nice', my_str)print(ret) # 输出: 1梦想橡皮擦1nice1nice1
match对象属性与方法1. 属性
  • .string:待匹配文本。
  • .re:匹配时使用的pattern对象。
  • .pos/.endpos:搜索的起始/结束位置。
  • 示例:import remy_str = '1梦想橡皮擦1good1good1'regex = re.compile(r'gw+d')ret = regex.search(my_str)print(ret.string) # 输出: 1梦想橡皮擦1good1good1
2. 方法
  • .group(0):获取匹配字符串。
  • .start()/.end():匹配字符串的起始/结束位置。
  • .span():返回(.start(), .end())。
  • 示例:import remy_str = '1梦想橡皮擦1good1good1'regex = re.compile(r'good')ret = regex.search(my_str)print(ret.span()) # 输出: (7, 11)

总结

本文介绍了Python中re库的初阶用法,包括正则表达式基础语法、常用函数(如search、match、findall等)及面向对象写法。通过编译正则对象可提升效率,match对象提供了匹配结果的详细信息。如需深入学习正则表达式语法,建议查阅更全面的资料。