对python3中的RE(正则表达式)-详细总结


Posted in Python onJuly 23, 2019

1.引入正则模块(Regular Expression)

要使用python3中的RE则必须引入 re模块

import re #引入正则表达式

2.主要使用的方法 match(), 从左到右进行匹配

#pattern 为要校验的规则
#str 为要进行校验的字符串
result = re.match(pattern, str) 
 
#如果result不为None,则group方法则对result进行数据提取

3. 正则表达式

1️⃣单字符匹配规则

字符 功能
.  匹配任意1个字符(除了\n)
[]  匹配[]中列举的字符
\d  匹配数字,也就是0-9
\D  匹配非数字,也就是匹配不是数字的字符
\s  匹配空白符,也就是 空格\tab
\S  匹配非空白符,\s取反
\w  陪陪单词字符, a-z, A-Z, 0-9, _
\W  匹配非单词字符, \w取反

2️⃣表示数量的规则

字符 功能
*  匹配前一个字符出现0次多次或者无限次,可有可无,可多可少
+  匹配前一个字符出现1次多次或则无限次,直到出现一次
?  匹配前一个字符出现1次或者0次,要么有1次,要么没有
{m}  匹配前一个字符出现m次
{m,} 匹配前一个字符至少出现m次
{m,n} 匹配前一个字符出现m到n次

例一: 验证手机号码是否符合规则(不考虑边界问题)

#首先清楚手机号的规则
#1.都是数字 2.长度为11 3.第一位是1 4.第二位是35678中的一位
 
pattern = "1[35678]\d{9}"
phoneStr = "18230092223"
 
result = re.match(pattern, phoneStr)
result.group()
 
#执行结果如下图:

对python3中的RE(正则表达式)-详细总结

4. 原始字符串raw, 先来看如下实例:

对python3中的RE(正则表达式)-详细总结

在上图中: 在给str赋值"\nabc"前加上"r"之后,python解释器会自动给str的值"\nabc"在加上一个"\".

使str在被打印的时候,能够保持原始字符串的值"\nabc"打印出来.

例二: (原始字符串在正则表达式中的应用)

对python3中的RE(正则表达式)-详细总结

假若没有原始自付出r,则我们就要进行如下的操作: 给pattern加上双倍的"\"以避免转义字符中减少"\".会比较麻烦

当我们使用r原始字符串时,就不必考虑字符串的转移问题,更易集中解决字符匹配问题.

对python3中的RE(正则表达式)-详细总结

5. 表示边界

字符 功能
^  匹配字符串开头
$  匹配字符串结尾
\b  匹配一个单词的边界
\B  匹配非单词边界

例三: 边界(制定规则来匹配str="ho ve r")

import re
 
#定义规则匹配str="ho ve r"
#1. 以字母开始
#2. 中间有空字符
#3. ve两边分别限定匹配单词边界
 
pattern = r"^\w+\s\bve\b\sr"
str = "ho ve r"
result = re.match(pattern, str)
result.group()

6. 匹配分组

字符  功能
|   匹配左右任意一个表达式
(ab)  将括号中字符作为一个分组
\num  引用分组num匹配到的字符串
(?P<name>) 分组起别名
(?P=name) 引用别名为name分组匹配到的字符串

例四: 匹配出0-100之间的数字

import re
 
#匹配出0-100之间的数字
#首先:正则是从左往又开始匹配
#经过分析: 可以将0-100分为三部分
#1. 0  "0$"
#2. 100  "100$"
#3. 1-99  "[1-9]\d{0,1}$"
#所以整合如下
 
pattern = r"0$|100$|[1-9]\d{0,1}$"
#测试数据为0,3,27,100,123
result = re.match(pattern, "27")
result.group()
 
#将0考虑到1-99上,上述pattern还可以简写为:pattern=r"100$|[1-9]?\d{0,1}$"
#测试结果如下图:

对python3中的RE(正则表达式)-详细总结

例五: 匹配分组,获取页面中的<h1>标签中的内容

import re
#匹配分组,获取页面<h1>标签中的内容, 爬虫的时候会用到
 
str = "<h1>hello world!<h1>"
pattern = r"<h1>(.*)</h1>"
result = re.match(pattern, str)
result.group()
 
#执行如下图

对python3中的RE(正则表达式)-详细总结

例六: 分组引用, 精确获取多个标签内的内容

import re
 
#引用分组,精确获取多个标签内的内容
#"\1"是对第一个分组的引用,同理......
 
str = "<span><h1>hello world!</h1></span>"
pattern = r"<(.+)><(.+)>.*</\2></\1>"
result = re.match(pattern, str)
result.groups()
 
#执行如下图:

对python3中的RE(正则表达式)-详细总结

例七-2:分组起别名

import re
 
#分组起别名
 
str = "<span><h1>hello world!</h1></span>"
pattern = "<(?P<key1>.+)><(?P<key2>.+)>(?P<nr>.*)</(?P=key2)></(?P=key1)>"
result = re.match(pattern, str)
result.groups()
 
#执行如下图:

对python3中的RE(正则表达式)-详细总结

以上这篇对python3中的RE(正则表达式)-详细总结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Java中重定向输出流实现用文件记录程序日志
Jun 12 Python
Python中Collections模块的Counter容器类使用教程
May 31 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
Jun 07 Python
python排序函数sort()与sorted()的区别
Sep 18 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
Nov 06 Python
Python docx库用法示例分析
Feb 16 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
Mar 11 Python
基于树莓派的语音对话机器人
Jun 17 Python
自适应线性神经网络Adaline的python实现详解
Sep 30 Python
tensorflow模型保存、加载之变量重命名实例
Jan 21 Python
python从ftp获取文件并下载到本地
Dec 05 Python
Python可视化学习之matplotlib内置单颜色
Feb 24 Python
python正则表达式匹配不包含某几个字符的字符串方法
Jul 23 #Python
python使用百度文字识别功能方法详解
Jul 23 #Python
Python使用type关键字创建类步骤详解
Jul 23 #Python
Python安装selenium包详细过程
Jul 23 #Python
python中列表的切片与修改知识点总结
Jul 23 #Python
python自动化测试之DDT数据驱动的实现代码
Jul 23 #Python
python用match()函数爬数据方法详解
Jul 23 #Python
You might like
自定义session存储机制避免会话保持问题
2014/10/08 PHP
Laravel 5 框架入门(四)完结篇
2015/04/09 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
PHP实现通过二维数组键值获取一维键名操作示例
2019/10/11 PHP
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
Javascript判断文件是否存在(客户端/服务器端)
2014/09/16 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
Javascript中arguments对象的详解与使用方法
2016/10/04 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
Vue.use源码分析
2017/04/22 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
2019/05/22 Javascript
jquery实现聊天机器人
2020/02/08 jQuery
Vue获取微博授权URL代码实例
2020/11/04 Javascript
python类参数self使用示例
2014/02/17 Python
python中from module import * 的一个坑
2014/07/20 Python
对于Python中线程问题的简单讲解
2015/04/03 Python
详解python中的json的基本使用方法
2016/12/21 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
美国婚礼装饰和活动用品批发供应商:Event Decor Direct
2018/10/12 全球购物
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
应届医学毕业生求职信分享
2013/12/02 职场文书
小学生成长感言
2014/01/30 职场文书
教师新年寄语
2014/04/03 职场文书
气象学专业个人求职信
2014/04/22 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技