当前位置:首页>python>2026年Python正则表达式指南

2026年Python正则表达式指南

  • 2026-10-11 06:51:21
2026年Python正则表达式指南

大家好,我是搞自动化的大飞~

最近一直在折腾AI,好久没聊Python了,今天填一个之前的坑——正则表达式。

很多小伙伴一听到正则就头大,匹配符号像天书

但在工作里,不管是写脚本、做自动化测试还是处理大量文本内容,正则表达是真的很好用

比如我们要从一长串日志里提取手机号、邮箱等关键信息,手写一堆 if else 判断就太麻烦了,但正则基本上一行就ok了

正则表达手册

下边是一份正则表达式查询手册,全部是最基础的语法。大家不用背,把它当“查字典”用就行

1、“万能符号”

正则最核心的三个符号(能解决 80% 的问题)

符号
匹配什么?
例子
\d
任意一个数字(0-9)
\d
 可以匹配 "5"
\s
任意一个空白符(空格、Tab、换行)
\s
 可以匹配 " "(空格)
.
任意一个字符(除了换行符)
.
 可以匹配 "a" 或 "我"

注意:这三个符号都只代表“一个”字符。比如 \d\d 匹配的是“12”,而不是“1”。

2、“数量”

我们有时需要精确匹配几个字符

符号
匹配什么?
例子
*
前面的字符出现 0 次或多次
\d*
 可以匹配 ""(空)或 "123"
+
前面的字符出现 1 次或多次
\d+
 可以匹配 "1" 或 "456",但不匹配空
?
前面的字符出现 0 次或 1 次
\d?
 可以匹配 "" 或 "3"
{n}
前面的字符出现恰好 n 次
\d{4}
 只能匹配 "2026"

3、“位置”

正则中我们指定开头或者结尾匹配

符号
匹配什么?
例子
^
匹配行的开头位置
^\d
 匹配行首的数字,如 "5abc" 中的 "5"
$
匹配行的结尾位置
\d$
 匹配行尾的数字,如 "abc3" 中的 "3"

4、自定义规则

如果以上都没有可用的方法,我们还可以用方括号 [] 自己造规则

符号
匹配什么?
例子
[abc]
匹配 a 或 b 或 c 中的任意一个
[abc]
 可以匹配 "a" 或 "b" 或 "c"
[a-z]
匹配任意一个小写字母
[a-z]
 可以匹配 "m"
[^0-9]
匹配任意一个非数字字符
[^0-9]
 可以匹配 "A" 或 "#"

5、转义

因为 .*+?^ 这些符号在正则里有特殊含义,如果要匹配符号本身,需要在前面加反斜杠 \

这也是很多编程语言里面常用的方法,相信大家也都有所了解

符号
匹配什么?
例子
\.
匹配字面意义上的点号(.)
\.
 可以匹配 "."
\*
匹配字面意义上的星号(*)
\*
 可以匹配 "*"
\+
匹配字面意义上的加号(+)
\+
 可以匹配 "+"
\?
匹配字面意义上的问号(?)
\?
 可以匹配 "?"
\\
匹配字面意义上的反斜杠(\)
\\
 可以匹配 "\"

比如:匹配网址中的 www.baidu.com → 正则要写成 www\.baidu\.com

Python中使用正则表达式

第一步:导入re模块

Python 自带 re 模块,不需要pip install 再安装,导入模块:

import re

第二步:两个最常用方法

正则的匹配方法太多了,我们先记两个最常用的:

  • re.search(pattern, string):在字符串里从左到右扫描,找到第一个匹配的就停下来,返回匹配结果
  • re.findall(pattern, string):把字符串里所有匹配的都找出来,一次性打包成一个列表返回

简单来记:search(查找)使用第一个,findall(寻找全部) 用第二个

实战——匹配数字

比如一段混着数字和字母的文本,我们想找到数字

import re# 匹配数字pattern = r'\d+'string = 'abc 123 def'result = re.search(pattern, string)if result:    print("匹配到数字:", result.group())  

输出结果:匹配到数字: 123

为了更清晰的展示,我把Pycharm的运行截图贴在这里了

实战2——匹配邮箱

匹配邮箱,正则最经典的用法之一(我自封的):

import re# 匹配邮箱地址pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'string = '联系我们:info@example.com 或者 contact@company.co.uk'emails = re.findall(pattern, string)print("匹配的邮箱地址:", emails) 

输出结果:匹配的邮箱地址: ['info@example.com', 'contact@company.co.uk']

为了更清晰的展示,我把Pycharm的运行截图贴在这里了

是不是看完了,觉得也还挺简单的。当然,现在有了AI的辅助,我们甚至不需要自己写正则表达式了

大家平时用正则多吗?有什么好的技巧分享?评论区聊聊👋

都看到这儿了,点个关注呗~

最新文章

随机文章