对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实现bitmap数据结构详解
Feb 17 Python
python生成随机mac地址的方法
Mar 16 Python
Python中atexit模块的基本使用示例
Jul 08 Python
利用Python生成文件md5校验值函数的方法
Jan 10 Python
pandas string转dataframe的方法
Apr 11 Python
Python2.7 实现引入自己写的类方法
Apr 29 Python
在NumPy中创建空数组/矩阵的方法
Jun 15 Python
使用memory_profiler监测python代码运行时内存消耗方法
Dec 03 Python
基于Python+Appium实现京东双十一自动领金币功能
Oct 31 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
May 15 Python
matplotlib.pyplot.plot()参数使用详解
Jul 28 Python
Python Matplotlib绘制等高线图与渐变色扇形图
Apr 14 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
当海贼王变成JOJO风
2020/03/02 日漫
中国的第一台收音机
2021/03/01 无线电
PHP error_log()将错误信息写入一个文件(定义和用法)
2013/10/25 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
ThinkPHP实现登录退出功能
2017/06/29 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
2017/10/11 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
javascript使用location.search的示例
2013/11/05 Javascript
用html+css+js实现的一个简单的图片切换特效
2014/05/28 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
AngularJS实现tab选项卡的方法详解
2017/07/05 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
VUE 配置vue-devtools调试工具及安装方法
2018/09/30 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
OpenLayers实现图层切换控件
2020/09/25 Javascript
python实现将pvr格式转换成pvr.ccz的方法
2015/04/28 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
Python批量提取PDF文件中文本的脚本
2018/03/14 Python
python实现视频分帧效果
2019/05/31 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
美国婚礼装饰和活动用品批发供应商:Event Decor Direct
2018/10/12 全球购物
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
大学生求职自荐信
2013/12/12 职场文书
中学生英语演讲稿
2014/04/26 职场文书
煤矿隐患排查制度
2015/08/05 职场文书