python 的正则表达式

Python 的 re 模块提供了以下常用函数:

函数名 功能描述 典型场景
re.match() 从字符串开头匹配模式 验证格式(如用户名、URL)
re.search() 在字符串中搜索第一个匹配项 提取特定内容(如邮箱、日期)
re.findall() 返回所有匹配项的列表 批量提取数据
re.finditer() 返回所有匹配项的迭代器 处理大型文本时节省内存
re.sub() 替换匹配到的内容 数据清洗、格式修正
re.split() 根据模式分割字符串 复杂文本分割
re.compile() 预编译正则表达式(提升性能) 重复使用同一模式时优化效率
基础元字符速查表:
符号 含义 示例
. 匹配任意单个字符(除换行符) a.c → “abc”, “a5c”
^ 匹配字符串开头 ^Hello → 匹配开头的"Hello"
$ 匹配字符串结尾 world$ → 匹配结尾的"world"
\d 匹配数字(等价于 [0-9] \d{3} → “123”, “456”
\D 匹配非数字 \D+ → “abc”, “$%#”
\w 匹配字母、数字、下划线 \w+ → “user123”
\W 匹配非字母、数字、下划线 \W+ → “@#$”
\s 匹配空白字符(空格、制表符等) \s+ → " ", “\t”
\S 匹配非空白字符 \S+ → “abc123”
量词速查表
量词 含义 示例
* 匹配前一个字符0次或多次 a*b → “b”, “aaab”
+ 匹配前一个字符1次或多次 a+b → “ab”, “aaab”
? 匹配前一个字符0次或1次 a?b → “b”, “ab”
{n} 匹配前一个字符恰好n次 a{3} → “aaa”
{n,} 匹配前一个字符至少n次 a{2,} → “aa”, “aaaaa”
{n,m} 匹配前一个字符n到m次 a{2,4} → “aa”, “aaaa”
字符集与分组速查表
语法 含义 示例
[abc] 匹配括号内任意一个字符 [aeiou] → 匹配元音字母
[^abc] 匹配不在括号内的字符 [^0-9] → 匹配非数字
(pattern) 捕获分组,可提取匹配内容 (\d{3})-(\d{4}) → 提取电话区号和号码
(?:pattern) 非捕获分组,不提取内容 (?:\d{3})-(\d{4}) → 只捕获后4位
#### 贪婪与非贪婪匹配速查表
模式 行为 示例(字符串:“
content
”)
默认(贪婪) 匹配尽可能长的字符串 r'<.*>' → 匹配整个 <div>content</div>
非贪婪模式 匹配尽可能短的字符串 r'<.*?>' → 匹配 <div> 和 </div>

实际应用

if re.search(r'\d+', 'abc123'): 
    print("包含数字")  # 输出
    
emails = re.findall(r'\b[\w.-]+@[\w.-]+\.\w+\b', 'a@test.com, b@demo.org')
# 结果: ['a@test.com', 'b@demo.org']

text = re.sub(r'(密码|password):\s*\S+', r'\1: ******', '密码: 12345')
# 结果: "密码: ******"

parts = re.split(r'[,;]+', 'a,b;c')  # 结果: ['a', 'b', 'c']

字符串操作

操作类型 方法/操作符 描述 实战场景示例
创建字符串 str()""''""" """ 创建字符串对象 从文件读取内容并存储为字符串。
拼接字符串 +join() 将多个字符串连接起来 将多个日志片段拼接成一个完整的日志字符串。
格式化字符串 format()f-string 动态插入变量或表达式到字符串中 生成动态 SQL 查询语句或日志消息。
查找子串 find()index()in 查找子串的位置或判断是否存在 检查用户输入是否包含敏感词。
替换子串 replace() 替换字符串中的子串 清理数据中的非法字符或占位符。
分割字符串 split()rsplit() 按分隔符将字符串拆分为列表 解析 CSV 文件中的每一行数据。
去除空白 strip()lstrip()rstrip() 去除字符串开头或结尾的空白字符 清理用户输入的前后空格。
大小写转换 lower()upper()title() 转换字符串的大小写 将用户输入统一转换为小写,便于比较。
对齐字符串 ljust()rjust()center() 将字符串对齐到指定宽度 格式化输出表格数据。
判断字符串 isalpha()isdigit()isalnum() 判断字符串是否满足特定条件(如全字母、全数字等) 验证用户输入的密码是否符合要求。
编码解码 encode()decode() 将字符串编码为字节,或将字节解码为字符串 处理网络传输中的数据或文件读写。
正则表达式 re 模块 使用正则表达式进行复杂字符串匹配和操作 提取文本中的邮箱地址或 URL。

实战