目录
1. re.match(pattern, string, flags=0)
2. re.search(pattern, string, flags=0)
3. re.findall(pattern, string, flags=0)
4. re.sub(pattern, repl, string, count=0, flags=0)
5. re.split(pattern, string, maxsplit=0, flags=0)
前言
在处理文本数据时,我们经常需要从字符串中提取特定格式的信息(如邮箱、手机号)、验证输入格式(如身份证号)或批量替换文本内容。正则表达式(Regular Expression)是解决这类问题的强大工具,它通过一种简洁的语法规则来描述字符串的模式,实现高效的文本匹配与处理。
Python 内置的 re
模块提供了对正则表达式的全面支持,本教程将从正则表达式的基本语法讲起,逐步介绍 re
模块的核心函数及实际应用场景,搭配大量案例帮助零基础学员快速掌握这一实用技能,让文本处理效率大幅提升。
一、正则表达式基础
1. 什么是正则表达式?
正则表达式是由一系列字符和特殊符号组成的模式字符串,用于描述字符串的特定规则。例如,\d{11}
可以匹配任意 11 位数字(如手机号),[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+
可以匹配邮箱地址。
正则表达式的核心价值在于:用简洁的模式实现复杂的文本匹配,避免编写冗长的字符串判断逻辑。
2. 正则表达式的基本语法
(1)普通字符
大多数字符(如字母、数字、标点)在正则表达式中代表自身,称为普通字符。例如,模式 abc
只能匹配字符串 "abc"
。
(2)元字符(特殊符号)
元字符是具有特殊含义的符号,是正则表达式的核心,常用元字符如下:
元字符 | 含义 | 示例 |
---|---|---|
. |
匹配任意单个字符(除换行符 \n ) |
a.b 匹配 aab 、acb 、a1b 等 |
^ |
匹配字符串的开头 | ^abc 匹配以 abc 开头的字符串(如 abc123 ) |
$ |
匹配字符串的结尾 | xyz$ 匹配以 xyz 结尾的字符串(如 123xyz ) |
* |
匹配前面的字符或子模式 0 次或多次 | ab*c 匹配 ac 、abc 、abbc 等 |
+ |
匹配前面的字符或子模式 1 次或多次 | ab+c 匹配 abc 、abbc 等(不匹配 ac ) |
? |
匹配前面的字符或子模式 0 次或 1 次 | ab?c 匹配 ac 、abc (不匹配 abbc ) |
{n} |
匹配前面的字符或子模式恰好 n 次 | a{3} 匹配 aaa |
{n,} |
匹配前面的字符或子模式至少 n 次 | a{2,} 匹配 aa 、aaa 等 |
{n,m} |
匹配前面的字符或子模式 n 到 m 次 | a{1,3} 匹配 a 、aa 、aaa |
[] |
字符集,匹配括号内的任意一个字符 | [abc] 匹配 a 、b 或 c ;[0-9] 匹配任意数字 |
[^] |
否定字符集,匹配不在括号内的任意字符 | [^0-9] 匹配非数字字符 |
| |
逻辑或,匹配左边或右边的模式 | ab|cd 匹配 ab 或 cd |
() |
分组,将括号内的内容视为一个整体 | (ab)+ 匹配 ab 、abab 等 |
\ |
转义字符,使特殊字符变为普通字符 | \. 匹配 . (否则 . 代表任意字符) |