大家好,我是搞自动化的大飞~
最近一直在折腾AI,好久没聊Python了,今天填一个之前的坑——正则表达式。
很多小伙伴一听到正则就头大,匹配符号像天书

但在工作里,不管是写脚本、做自动化测试还是处理大量文本内容,正则表达是真的很好用
比如我们要从一长串日志里提取手机号、邮箱等关键信息,手写一堆 if else 判断就太麻烦了,但正则基本上一行就ok了
正则表达手册
下边是一份正则表达式查询手册,全部是最基础的语法。大家不用背,把它当“查字典”用就行
1、“万能符号”
正则最核心的三个符号(能解决 80% 的问题)
注意:这三个符号都只代表“一个”字符。比如 \d\d 匹配的是“12”,而不是“1”。
2、“数量”
我们有时需要精确匹配几个字符
3、“位置”
正则中我们指定开头或者结尾匹配
4、自定义规则
如果以上都没有可用的方法,我们还可以用方括号 [] 自己造规则
| | |
|---|
[abc] | | [abc] |
[a-z] | | [a-z] |
[^0-9] | | [^0-9] |
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的辅助,我们甚至不需要自己写正则表达式了
大家平时用正则多吗?有什么好的技巧分享?评论区聊聊👋
都看到这儿了,点个关注呗~