常用正则表达式手册
正则表达式是文本处理的 “瑞士军刀”,核心是用简洁的符号规则匹配、提取或替换文本中的特定模式。
一、正则表达式核心概念
正则表达式(Regex)是一套用于描述文本模式的语法规则,可快速实现文本的匹配、查找、替换等操作,广泛应用于数据清洗、验证(如手机号、邮箱)、文本提取等场景。
二、核心语法规则(常用)
1. 基础匹配符号
-
普通字符:直接匹配自身(如
a匹配字符 “a”,123匹配 “123”)。 -
转义字符
\:匹配特殊字符(如\.匹配小数点 “.”,\*匹配星号 “*”,\s匹配空白字符(空格、换行等))。 -
字符集
[]:匹配集合内任意一个字符(如[abc]匹配 “a”“b” 或 “c”,[0-9]匹配任意数字,[a-zA-Z]匹配任意字母)。 -
反向字符集
[^]:匹配不在集合内的字符(如[^0-9]匹配非数字字符)。
2. 量词(指定匹配次数)
-
*:匹配前面的字符 0 次或多次(如a*匹配 “”“a”“aa” 等)。 -
+:匹配前面的字符 1 次或多次(如a+匹配 “a”“aa”,不匹配空字符串)。 -
?:匹配前面的字符 0 次或 1 次(如a?匹配 “” 或 “a”,用于可选字符)。 -
{n}:精确匹配 n 次(如\d{3}匹配 3 个连续数字)。 -
{n,}:匹配至少 n 次(如\d{2,}匹配 2 个及以上数字)。 -
{n,m}:匹配 n 到 m 次(如\d{3,5}匹配 3-5 个数字)。
3. 特殊定位符
-
^:匹配字符串开头(如^abc匹配以 “abc” 开头的字符串)。 -
$:匹配字符串结尾(如abc$匹配以 “abc” 结尾的字符串)。 -
\b:匹配单词边界(如\bcat\b匹配 “cat”,不匹配 “category” 中的 “cat”)。
4. 分组与捕获
-
():将表达式分组,可整体操作(如(ab)+匹配 “ab”“abab” 等)。 -
捕获组:分组后可提取匹配内容(如
(\d{3})-(\d{4})匹配 “123-4567”,可分别提取 “123” 和 “4567”)。
5. 常用预定义字符集
-
\d:匹配任意数字(等价于[0-9])。 -
\D:匹配非数字(等价于[^0-9])。 -
\w:匹配字母、数字、下划线(等价于[a-zA-Z0-9_])。 -
\W:匹配非字母、数字、下划线。 -
\s:匹配空白字符(空格、换行、制表符等)。 -
\S:匹配非空白字符。
三、Python 中使用正则(re 模块)
1. 常用函数
-
re.match(pattern, string):从字符串开头匹配,成功返回匹配对象,失败返回None。 -
re.search(pattern, string):在整个字符串中查找第一个匹配项,成功返回匹配对象。 -
re.findall(pattern, string):查找所有匹配项,返回列表。 -
re.sub(pattern, repl, string):替换匹配项,返回替换后的字符串(如re.sub(r'\d', '*', '123abc')结果为 “***abc”)。
2. 示例(匹配手机号)
import re
phone = "13812345678"
pattern = r'^1\[3-9]\d{9}\$' # 手机号规则:1开头,第2位3-9,后9位数字
print(re.match(pattern, phone)) # 匹配成功,返回匹配对象
四、核心总结
1. 核心用途
-
文本匹配验证(手机号、邮箱、密码等)。
-
文本提取(从字符串中提取数字、日期、链接等)。
-
文本替换(批量修改特定格式内容,如统一手机号格式)。
2. 关键语法口诀
-
字符集用
[],反向加^; -
量词
*+?{n,m},控制匹配次数; -
定位
^$定首尾,\b是单词边界; -
\d\w\s代数字、字母、空白,大写反之。
3. 注意事项
-
特殊字符(如
.、*、?)需用\转义,或放在[]中(如[.]匹配小数点)。 -
匹配模式(如忽略大小写
re.IGNORECASE)可通过re函数的flags参数设置。
要不要我帮你整理一份常用正则表达式模板手册?包含手机号、邮箱、日期等常见场景的现成表达式,方便你直接复用。

浙公网安备 33010602011771号