Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作。

在文本解析、复杂字符串分析和信息提取时是一个非常有用的工具,下面总结了 re 模块的常用方法。

一. 预定义字符

\d  匹配所有的十进制数字  0-9\D  匹配所有的非数字,包含下划线\s  匹配所有空白字符(空格、TAB等)\S  匹配所有非空白字符,包含下划线\w  匹配所有字母、汉字、数字    a-z A-Z 0-9\W  匹配所有非字母、汉字、数字,包含下划线

二. 特殊字符

$:匹配一行的结尾(必须放在正则表达式最后面)^:匹配一行的开头(必须放在正则表达式最前面)*:前面的字符可以出现0次或多次(0~无限)(贪婪匹配)+:前面的字符可以出现1次或多次(1~无限)(贪婪匹配)?:变"贪婪模式"为"勉强模式",前面的字符可以出现0次或1次(非贪婪匹配)备注:符号.* 贪婪,符号.*? 非贪婪.:匹配除了换行符"\n"之外的任意单个字符|:两项都进行匹配[ ]:代表一个集合,有如下三种情况[abc]:能匹配其中的单个字符[a-z0-9]:能匹配指定范围的字符,可取反(在最前面加入^)[2-9] [1-3]:能够做组合匹配{ }:用于标记前面的字符出现的频率,有如下情况:
{n,m}:代表前面字符最少出现n次,最多出现m次{n,}:代表前面字符最少出现n次,最多不受限制{,m}:代表前面字符最多出现n次,最少不受限制{n}:前面的字符必须出现n次

三. 反斜杠说明

字符串中有反斜杠的,需要对反斜杠做转义

四. 分组

():分组字符,可以为匹配到的内容分组,快速获取到分组中的数据 在正则里面 "()" 代表的是分组的意思,一个括号代表一个分组,你只能匹配到 "()" 中的内容。group:用于查看指定分组匹配到的内容groups:返回一个元组,组内为所有匹配到的内容groupdict:返回一个字典,包含分组的键值对,需要为分组命名

五. 常用方法

match:在目标文本的开头进行匹配search:在整个目标文本中进行匹配findall:扫描整个目标文本,返回所有与规则匹配的子串组成的列表,如果没有匹配的返回空列表splitre.split(pattern, string[, maxsplit=0, flags=0])
split(string[, maxsplit=0])
作用:可以将字符串匹配正则表达式的部分割开并返回一个列表

六. 正则表达式函数里面的flags参数说明

flags定义包括:

re.I:忽略大小写re.L:表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境re.M:多行模式re.S:’.’并且包括换行符在内的任意字符(注意:’.’不包括换行符)re.U:表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库在 Python 中使用正则表达式之前,先使用以下命令导入 re 模块
import re
示例1:具体使用说明
例如:‘(\d)(a)\1’ 表示:匹配第一是数字,第二是字符a,第三 \1 必须匹配第一个一样的数字重复一次,也就是被引用一次。如 “9a9” 被匹配,但 “9a8” 不会被匹配,因为第三位的 \1 必须是 9 才可以。‘(\d)(a)\2’ 表示:匹配第一个是一个数字,第二个是a,第三个 \2 必须是第二组()中匹配一样的。如 “8aa” 被匹配,但 “8ab”,“7a7” 不会被匹配,第三位必须是第二组字符的复制版,也是就引用第二组正则的匹配内容。
print(re.match(r'(\w{3}).',"abceeeabc456abc789").group())
print(re.match(r'(\w{3}).*',"abceeeabc456abc789").group())#*贪婪匹配
print(re.match(r'(\w{3}).*?',"abceeeabc456abc789").group())#?非贪婪匹配
print(re.search(r'(\d{3})',"abceeeabc456abc789").group())
print(re.search(r'(\w{3})(\d+)(\1)',"abceeeabc456abc789abc").groups())
print(re.search(r'(\w{3})(\d+)(\1)',"abceeeabc456abc789abc").group(1))
print(re.search(r'(\w{3})(\d+)(\1)',"abceeeabc456abc789abc").group(2))
print(re.search(r'(\w{3})(\d+)(\1)',"abceeeabc456abc789abc").group(3))
print(re.search(r'(\w{3})(\d+)(\2)',"abceeeabcs456456abc456789abc").groups())
print(re.search(r'(\w{3})(\d+)(\2)',"abceeeabcs456456abc456789abc").group(1))
print(re.search(r'(\w{3}).*?(\1)',"abceeeabc456abc789abc").group(1))
print(re.search(r'(\w{3}).*?(\1)',"abceeeabc456abc789abc").group(2))
print(re.search(r'(\w{3})(.*?)(\2)',"abceeeabc456abc789").group())
print(re.search(r'(\w{3}).*?(\1)',"abceeeabc456abc789").group(1,2))print(re.findall(r'\d+','one11two22three33four44'))
print(re.split(r'\W+','192.168.1.1')) #\W匹配所有非字母、汉字、数字,包含下划线,然后处理完成返回一个列表
print(re.split(r'(\W+)','192.168.1.1')) #加了括号后做了分组的处理,.号也被分割了
print(re.split(r'(\W+)','192.168.1.1',1)) #加了一个1这个参数后,表示最大分割深度为1str1 = '''goodjobisgood:testisgoodwelldone'''
res1 = re.findall(r'good(.*?)done',str1)
 如果不使用re.S参数,则只在每一行内进行匹配,如果一行没有,就换下一行重新开始,不会跨行。而使用re.S参数以后,正则表达式会将这个字符串作为一个整体,将“\n”当做一个普通的字符加入到这个字符串中,在整体中进行匹配。
res2 = re.findall(r'good(.*?)done',str1,re.S)
print(res1)
print(res2)
示例2:网页信息匹配
str1 = '<p>this is a herf<a href="www.baidu.com">goodjob</a></p>'
find = re.search('<a href="(.+)">(\w+)</a>', str1)
find = re.search('<a href="(?P<url>.+)">(?P<name>\w+)</a>', str1)
print(find.groups())
print(find.group(1))
print(find.group(2))
print(find.groupdict())
示例3:日期匹配
date1=input("请输入年月日:")
result1=re.match(r'^(\d{4}-\d{1,2}-\d{1,2})$',date1)
print(result1.group())
示例4:邮箱正则匹配
re_email = r'^[a-zA-Z0-9_]{0,20}@(163|162|Gmail|yahoo)\.com'
email_address = input('请输入邮箱')
res = re.search(re_email, email_address)
print(res)
print(email_address)
print(type(res))
print(res.group())
示例5:手机号匹配
phone=input("请输入手机号:")
result2=re.match(r'1[35678]\d{9}',phone)
print(result2.group())

欢迎关注: 无量测试之道公众号,回复: 领取资源

Python+Unittest框架API自动化、

Python+Unittest框架API自动化、

Python+Pytest框架API自动化、

Python+Pandas+Pyecharts大数据分析、

Python+Selenium框架Web的UI自动化、

Python+Appium框架APP的UI自动化、

Python编程学习资源干货、

Vue前端组件化框架开发、

资源和代码 免费送啦~

包含:数据分析、大数据、机器学习、测试开发、API接口自动化、测试运维、UI自动化、性能测试、代码检测、编程技术等。

微信搜索公众号: 无量测试之道添加关注,让我们一起共同成长 !

强烈推荐!Python 这个宝藏库 re 正则匹配相关推荐

  1. Python使用re模块进行正则匹配日期和时间

    Python使用re模块进行正则匹配日期和时间 目录 Python使用re模块进行正则匹配日期和时间 日期匹配 时间匹配 日期匹配 #导入需要的正则匹配的re包 # Load regex packag ...

  2. python截取指定字符串_python 正则匹配获取指定多个词的在字符串(句子/段落)索引位置...

    python 正则匹配获取指定多个词的在字符串(句子/段落)索引位置 利用re.finditer()特性. finditer() 返回一个MatchObject类型的iterator,它提供了匹配对象 ...

  3. python中re模块及正则匹配

    Python中正则表达式 re:re是提供正则表达式匹配操作的模块 一.什么是正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某个模式匹配,Python 自1.5版本起 ...

  4. boost库之正则匹配

    正则基础:正则匹配字符 *点号(.)可以匹配任意单个字符 *表示前面的字符可以重复任意多次(n>=0) +表示前面的字符可以重复一次或多次(n>0) ?表示前面的字符可以重复0次或1次 ^ ...

  5. 推荐一个超级好用的正则匹配在线的网站

    正则表达式在线验证和匹配 regex101: build, test, and debug regexhttps://regex101.com/ URL转义和反转义 URL Decode and En ...

  6. python正则匹配中文/英文/数字/其它字符

    匹配提取 一些字符串既包含中文.也包含英文.数字等,需要对这类字符串做提取,单个中文字符.英文单词以及数字表达等.需要采用正则匹配的方式来做 比如对于如下针对数据的描述 Android/IOS 2条装 ...

  7. 入门小远学爬虫(二)(四)简单GET型网页爬虫实战——“前程无忧”爬虫岗位信息的爬取之正则概念以及Python中re库的简单应用

    文章目录 前言 一.正则表达式是什么? 二.正则表达式语法 1.简介 2.干货分享 三.re库 1.安装 2.用法 四.终于进入正题 小结 前言 这是本系列第一个实战项目的第四课,有关前三课相关的内容 ...

  8. dython:Python数据建模宝藏库

    尽管已经有了scikit-learn.statsmodels.seaborn等非常优秀的数据建模库,但实际数据分析过程中常用到的一些功能场景仍然需要编写数十行以上的代码才能实现. 而今天要给大家推荐的 ...

  9. python中的库有哪些餐厅_推荐一些实用的的 Python 库

    Python Python开发 Python语言 推荐一些实用的的 Python 库 一门语言好用.方便的程度在很多时候会取决于这门语言相关的库够不够丰富,Python 之所以火爆除了其本身的语法和特 ...

  10. 精选的Python框架,库,软件和资源的精选清单【墙裂推荐收藏】

    目录 管理面板 算法和设计模式 ASGI服务器 异步编程 声音的 验证 制作工具 内置类增强 内容管理系统 快取 ChatOps工具 代码分析 命令行界面开发 命令行工具 兼容性 计算机视觉 并发与并 ...

最新文章

  1. 决定神经网络迭代次数的两个因素
  2. allegro差分信号走线_浅谈硬件设计中的一些思路和方法(5)—信号系统,又学到了...
  3. 科大星云诗社动态20210321
  4. java求s a aa aaa_Java求s=a+aa+aaa+aaaa+aa...a的值
  5. springboot细节挖掘(配置Swagger2)
  6. python 格式化输出
  7. 《软件测试与质量保证》期末复习重点
  8. 错乱的 Windows 10
  9. 10大Go语言开源项目推荐
  10. (备忘)怎么去除WinRAR弹窗广告?
  11. 【软件安装】MacBook 安装 MATLAB 2020a
  12. ONNX: export failure: Exporting the operator silu to ONNX opset version 12 is not suppo
  13. 餐饮管理系统哪个好用?
  14. C#操作Excel文件(读取Excel,写入Excel)
  15. MySQL DDL Duplicate entry '12' for key 'PRIMARY'
  16. 璇玑图(后续的字符串处理)
  17. @Resource与@Autowired注解的区别
  18. python中分支结构的条件表达_【单选题】下面不能作为Python分支结构的条件表达的是(a为一个数值变量) A. a10 B. a in {“ysu”} C. a5 and a10 D. 5...
  19. 畅捷通t6选择服务器信息,用友软件t6服务器地址
  20. 人人都能懂的图灵机原理

热门文章

  1. java职业教育考试题_云课堂智慧职教java职业证书题库答案
  2. 免费申请微软云教育服务器,自助免费申请Office365教育版,免费5TOneDrive云盘详细教程...
  3. 1.2、SRv6(Segment Routing Over IPv6) 介绍
  4. 【计算机组成原理】计算机的发展及应用
  5. Ds18b20的使用
  6. 49个Excel常用技巧
  7. HTMLTestRunner测试报告美化
  8. php laravel 图片下载
  9. Redis源码之——跳表skiplist原理和源码调试
  10. 文档交接说明书(模板)