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')
text = re.sub(r'(密码|password):\s*\S+', r'\1: ******', '密码: 12345')
parts = re.split(r'[,;]+', '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。 |
实战