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。

实战