对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迭代用法实例教程
Sep 08 Python
Python基础之函数用法实例详解
Sep 10 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
Dec 25 Python
利用python爬取软考试题之ip自动代理
Mar 28 Python
简单的python协同过滤程序实例代码
Jan 31 Python
python实现扫描ip地址的小程序
Apr 16 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
Jul 04 Python
python读取并写入mat文件的方法
Jul 12 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
Aug 22 Python
Python concurrent.futures模块使用实例
Dec 24 Python
Python3 使用pip安装git并获取Yahoo金融数据的操作
Apr 08 Python
Python实现简单得递归下降Parser
May 02 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日历[测试通过]
2008/03/27 PHP
php判断字符以及字符串的包含方法属性
2008/08/30 PHP
PHP 页面编码声明方法详解(header或meta)
2010/03/12 PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
2011/11/02 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
利用js的Node遍历找到repeater的一个字段实例介绍
2013/04/25 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
在Mac下彻底卸载node和npm的方法
2018/05/16 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
对于Python编程中一些重用与缩减的建议
2015/04/14 Python
详解Python设计模式编程中观察者模式与策略模式的运用
2016/03/02 Python
Python多线程爬虫简单示例
2016/03/04 Python
在Pycharm中设置默认自动换行的方法
2019/01/16 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
css3图片边框border-image的用法
2017/06/30 HTML / CSS
24个canvas基础知识小结
2014/12/17 HTML / CSS
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
闭幕式主持词
2014/04/02 职场文书
小学生评语集锦
2014/04/18 职场文书
献爱心活动总结
2014/05/07 职场文书
爱的承诺书
2015/01/20 职场文书
商场营业员岗位职责
2015/04/14 职场文书
中职班主任培训心得体会
2016/01/07 职场文书
python基于tkinter实现gif录屏功能
2021/05/19 Python
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis
Python jiaba库的使用详解
2021/11/23 Python