对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 相关文章推荐
Python读写Excel文件方法介绍
Nov 22 Python
Python面向对象编程中关于类和方法的学习笔记
Jun 30 Python
Python通过命令开启http.server服务器的方法
Nov 04 Python
python 实时得到cpu和内存的使用情况方法
Jun 11 Python
python3判断url链接是否为404的方法
Aug 10 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
Dec 17 Python
pycharm设置鼠标悬停查看方法设置
Jul 29 Python
在Django中自定义filter并在template中的使用详解
May 19 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
Jun 22 Python
Django-celery-beat动态添加周期性任务实现过程解析
Nov 26 Python
python和opencv构建运动检测器的实现
Mar 03 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
Oct 16 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
php 数组的指针操作实现代码
2011/02/08 PHP
分享php分页的功能模块
2015/06/16 PHP
javascript 表单规则集合对象
2009/07/21 Javascript
jQuery 前的按键判断代码
2010/03/19 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
js onload处理html页面加载之后的事件
2013/10/30 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
javascript常用方法总结
2015/05/14 Javascript
轻松学习Javascript闭包函数
2015/12/15 Javascript
js中实现字符串和数组的相互转化详解
2016/01/24 Javascript
Angularjs 创建可复用组件实例代码
2016/10/09 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
2016/10/20 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
如何以Angular的姿势打开Font-Awesome详解
2018/04/22 Javascript
微信小程序仿RadioGroup改变样式的处理方案
2018/07/13 Javascript
[06:16]《DAC最前线》之地区预选赛全面回顾
2015/01/19 DOTA
对于Python的框架中一些会话程序的管理
2015/04/20 Python
python 调用HBase的简单实例
2016/12/18 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
ipad上运行python的方法步骤
2019/10/12 Python
关于jupyter打开之后不能直接跳转到浏览器的解决方式
2020/04/13 Python
python 如何实现遗传算法
2020/09/22 Python
如何利用Python写个坦克大战
2020/11/18 Python
Lookfantastic挪威官网:英国知名美妆购物网站
2017/07/26 全球购物
巴西化妆品商店:Lojas Rede
2019/07/26 全球购物
网络书店创业计划书
2014/02/07 职场文书
学历公证书范本
2014/04/09 职场文书
室内设计专业自荐信
2014/05/31 职场文书
2015年世界卫生日活动总结
2015/02/09 职场文书
2015员工年度考核评语
2015/03/25 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
MySQL令人咋舌的隐式转换
2021/04/05 MySQL