常用正则表达式汇总----python
·
Python 正则表达式(通过 re 模块实现)是处理字符串的强大工具。下面介绍最常用的核心功能,包括常用函数、元字符和特殊序列,配合简单示例。
一、常用的 re 模块函数
这是你最常调用的工具函数:
| 函数 | 作用 | 简单示例 |
|---|---|---|
re.search(pattern, string) |
在字符串中查找第一个匹配的位置(返回匹配对象,没找到返回 None)。 |
re.search(r"\d+", "abc123def") → 匹配 123 |
re.findall(pattern, string) |
查找所有匹配的子串,返回一个列表。 | re.findall(r"\d+", "1a2b3c") → ['1', '2', '3'] |
re.sub(pattern, repl, string) |
替换匹配的子串。 | re.sub(r"\d+", "*", "1a2b") → '*a*b' |
re.match(pattern, string) |
只从字符串开头进行匹配(用得较少,search 更通用)。 |
re.match(r"a", "abc") → 匹配 a |
二、核心元字符(构建规则的积木)
元字符是正则表达式的灵魂,用来定义匹配规则:
1. 基础匹配
| 符号 | 描述 | 示例 |
|---|---|---|
. |
匹配任意单个字符(除了换行符 \n)。 |
a.c → 匹配 abc、a1c、a!c |
^ |
匹配字符串的开头。 | ^Hello → 匹配以 Hello 开头的字符串 |
$ |
匹配字符串的结尾。 | World$ → 匹配以 World 结尾的字符串 |
2. 重复次数(量词)
| 符号 | 描述 | 示例 |
|---|---|---|
* |
匹配前一个字符 0 次或多次(贪婪匹配)。 | ab* → 匹配 a、ab、abb、abbb… |
+ |
匹配前一个字符 1 次或多次。 | ab+ → 匹配 ab、abb…(不匹配 a) |
? |
匹配前一个字符 0 次或 1 次(可选)。 | ab? → 匹配 a 或 ab |
{n} |
匹配前一个字符 恰好 n 次。 | a{3} → 匹配 aaa |
{n,} |
匹配前一个字符 至少 n 次。 | a{2,} → 匹配 aa、aaa… |
{n,m} |
匹配前一个字符 n 到 m 次。 | a{2,4} → 匹配 aa、aaa、aaaa |
3. 字符集合
| 符号 | 描述 | 示例 |
|---|---|---|
[abc] |
匹配方括号内的任意一个字符。 | [abc] → 匹配 a、b 或 c |
[a-z] |
匹配指定范围内的字符。 | [a-z] → 匹配任意小写字母 |
[^abc] |
匹配不在方括号内的字符(取反)。 | [^abc] → 匹配除了 a、b、c 之外的字符 |
4. 分组与逻辑
| 符号 | 描述 | 示例 |
|---|---|---|
(...) |
将括号内的部分作为一个分组(提取子串时常用)。 | (ab)+ → 匹配 ab、abab… |
| |
逻辑或(匹配左边或右边的规则)。 | cat|dog → 匹配 cat 或 dog |
三、常用特殊序列(简写)
这些是预定义的快捷方式,让正则更简洁:
| 符号 | 描述 | 等价于 |
|---|---|---|
\d |
匹配任意数字。 | [0-9] |
\D |
匹配任意非数字。 | [^0-9] |
\w |
匹配单词字符(字母、数字、下划线)。 | [a-zA-Z0-9_] |
\W |
匹配非单词字符。 | [^a-zA-Z0-9_] |
\s |
匹配空白字符(空格、制表符、换行符)。 | [ \t\n\r\f\v] |
\S |
匹配非空白字符。 | [^ \t\n\r\f\v] |
四、实用小例子
-
匹配手机号(简单版):
re.findall(r"1\d{10}", "我的电话是13812345678") # 输出: ['13812345678'] -
提取邮箱:
re.findall(r"\w+@\w+\.\w+", "联系我: test@example.com") # 输出: ['test@example.com'] -
替换敏感词:
re.sub(r"坏蛋", "***", "你是个坏蛋,大坏蛋!") # 输出: '你是个***,大***!'
小贴士
- 在 Python 中,正则表达式字符串前通常加
r(如r"\d+"),表示原始字符串,避免转义字符冲突。 - 正则很强大但也容易写复杂,建议循序渐进,多用
findall测试效果。
更多推荐



所有评论(0)