对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实现的DES加密算法和3DES加密算法实例
Jun 03 Python
python 多线程中子线程和主线程相互通信方法
Nov 09 Python
浅谈python下含中文字符串正则表达式的编码问题
Dec 07 Python
Python + OpenCV 实现LBP特征提取的示例代码
Jul 11 Python
Django如何简单快速实现PUT、DELETE方法
Jul 24 Python
Django实现跨域请求过程详解
Jul 25 Python
pywinauto自动化操作记事本
Aug 26 Python
python代码如何注释
Jun 01 Python
Django REST Swagger实现指定api参数
Jul 07 Python
calendar在python3时间中常用函数举例详解
Nov 18 Python
详解Python requests模块
Jun 21 Python
Python中的turtle画箭头,矩形,五角星
Mar 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
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
2014/10/30 PHP
PHP生成图片缩略图类示例
2017/01/12 PHP
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
超链接的禁用属性Disabled使用示例
2014/07/31 Javascript
jquery实现类似淘宝星星评分功能实例
2014/09/12 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
javascript实现日期时间动态显示示例代码
2015/09/08 Javascript
深入浅析JS的数组遍历方法(推荐)
2016/06/15 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
2017/09/20 jQuery
详解create-react-app 自定义 eslint 配置
2018/06/07 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
Python图算法实例分析
2016/08/13 Python
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
使用matplotlib画散点图的方法
2018/05/25 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
django自带serializers序列化返回指定字段的方法
2019/08/21 Python
python pptx复制指定页的ppt教程
2020/02/14 Python
基于OpenCV的网络实时视频流传输的实现
2020/11/15 Python
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
德国最大的服装、鞋子和配件在线商店之一:Outfits24
2019/07/23 全球购物
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
自动化专业毕业生求职信
2014/06/18 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
解除劳动关系协议书范文
2014/09/11 职场文书
2014年银行员工年终自我评价
2014/09/19 职场文书
给校长的建议书作文300字
2015/09/14 职场文书
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js