1 re库简介
Python 的re库是一个功能强大的正则表达式模块,它允许用户执行各种复杂的字符串匹配和处理任务。
以下是re库的主要功能:
- 搜索:re.search() 用于搜索字符串中第一次出现的模式。
- 匹配:re.match() 从字符串的开始位置匹配模式。
- 查找:re.findall() 返回字符串中所有匹配的子串。
- 分组:使用圆括号定义的分组,可以在搜索结果中单独提取。
- 替换:re.sub() 用于替换字符串中的匹配项。
- 分割:re.split() 根据模式分割字符串。
- 编译:re.compile() 允许将正则表达式编译成模式对象,提高效率。
- 贪婪与非贪婪匹配:通过使用 ? 来使量词变为非贪婪模式,匹配尽可能少的字符。
- 特殊字符:如 . 匹配任意单个字符,* 匹配前面的元素零次或多次等。
- 修饰符:如 re.IGNORECASE 使匹配时忽略大小写,re.MULTILINE 使 ^ 和 $ 匹配每一行的开始和结束。
re库可以解决的问题非常多样,例如:
- 文本验证:验证邮箱、电话号码、IP 地址等是否符合特定格式。
- 数据提取:从日志文件、网页源代码等中提取有用信息。
- 文本清洗:去除文本中的 HTML 标签、特殊字符或不需要的空白。
- 文本转换:将文本从一种格式转换为另一种格式,如驼峰命名转换为下划线命名。
- 自动化脚本:在自动化脚本中使用正则表达式处理文件名、路径等。
- 自然语言处理:在文本分析中识别和处理词性、语法结构等。
- 配置文件解析:解析配置文件中的选项和参数。
2 代码示例
2.1 搜索
搜索字符串中是否包含数字。
import re
if re.search(r'\d+', 'abc123def'):
print('字符串包含数字')
结果如下:
2.2 匹配
匹配字符串是否包含数字开头。
import re
if re.match(r'^\d+', '123abc'):
print('字符串为数字开头')
结果如下:
import re
matches = re.findall(r'\b\w+', 'hello world')
print(matches) # ['hello', 'world']