常用正则表达式手册

正则表达式是文本处理的 “瑞士军刀”,核心是用简洁的符号规则匹配、提取或替换文本中的特定模式。

一、正则表达式核心概念

正则表达式(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 参数设置。

要不要我帮你整理一份常用正则表达式模板手册?包含手机号、邮箱、日期等常见场景的现成表达式,方便你直接复用。

posted @ 2025-11-02 22:04  韩熙隐ario  阅读(3)  评论(0)    收藏  举报