对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输出一个杨辉三角的例子
Jun 13 Python
python实现绘制树枝简单示例
Jul 24 Python
python 实现删除文件或文件夹实例详解
Dec 04 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
Aug 02 Python
Django基础知识 URL路由系统详解
Jul 18 Python
Python3将jpg转为pdf文件的方法示例
Dec 13 Python
基于python3实现倒叙字符串
Feb 18 Python
python 实现 hive中类似 lateral view explode的功能示例
May 18 Python
Python用K-means聚类算法进行客户分群的实现
Aug 23 Python
Pycharm同步远程服务器调试的方法步骤
Nov 04 Python
python解包概念及实例
Feb 17 Python
Python中的协程(Coroutine)操作模块(greenlet、gevent)
May 30 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
通过文字传递创建的图形按钮
2006/10/09 PHP
php中的比较运算符详解
2013/10/28 PHP
另一个javascript小测验(代码集合)
2011/07/27 Javascript
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
2012/02/27 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
js与运算符和或运算符的妙用
2014/02/14 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
js触发select onchange事件的小技巧
2014/08/05 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
功能强大的jquery.validate表单验证插件
2016/11/07 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
0基础学习前端开发的一些建议
2020/07/14 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
使用Python实现租车计费系统的两种方法
2018/09/29 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
2014/09/15 HTML / CSS
万得城电器土耳其网站:欧洲第一大电子产品零售商
2016/10/07 全球购物
医学院校毕业生自荐信范文
2014/01/01 职场文书
数学国培研修感言
2014/02/13 职场文书
业务员的岗位职责
2014/03/15 职场文书
大型会议策划方案
2014/05/17 职场文书
优秀实习生主要事迹
2014/05/29 职场文书
合作协议书范文
2014/08/20 职场文书
2014年化验室工作总结
2014/11/21 职场文书
共青团员自我评价
2015/03/10 职场文书
服务员岗位职责范本
2015/04/09 职场文书
社区党建工作总结2015
2015/05/13 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书