浅谈python正则的常用方法 覆盖范围70%以上


Posted in Python onMarch 14, 2018

上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去找内容,因为容易理解也方便,),而是正则用好用精通的很难(看过正则表的应该都知道,里面符号对应的方法规则有很多,很灵活),对于接触编程不久的朋友们来说很可能在编程的过程上浪费很多时间,今天我把经常会用到正则简单介绍下,如果不是很特殊基本都覆盖使用。

1.正则的简单介绍

首先你得导入正则方法 import re正则表达式是用于处理字符串的强大工具,拥有自己独立的处理机制,效率上可能不如str自带的方法,但功能十分灵活给力。它的运行过程是先定一个匹配规则("你想要的内容+正则语法规则"),放入要匹配的字符串,通过正则内部的机制就能检索你想要的信息。

2.findall的常用几种姿势

基本结构大致: nojoke = re.findall(r'匹配的规则','要检索的愿字符串') nojoke就是我们最后通过正则返回的结果,re正则findall查找全部r标识代表后面是正则的语句(这样在代码多的时候好查阅),下面我们看看几个例子好深入了解

浅谈python正则的常用方法 覆盖范围70%以上

这段代码是找出检索字符串中所有的bi并以列表的形式返回,这个会经常用到计算统一字符出现的次数。继续看下一个

浅谈python正则的常用方法 覆盖范围70%以上

这里加了个符号^表示匹配以abi开头的的字符串返回,也可以判断字符串是否以abi开始的。

浅谈python正则的常用方法 覆盖范围70%以上

这里在的用$符号表示以gbi结尾的字符串返回,判断是否字符串结束的字符串。

浅谈python正则的常用方法 覆盖范围70%以上

这里[...]的意思匹配括号内a和f,或者b和f,或者c和f的值返回列表。

浅谈python正则的常用方法 覆盖范围70%以上

“\d”是正则语法规则用来匹配0到9之间的数返回列表,需要注意的是11会当成字符串'1'和'1'返回而不是返回'11'这个字符串,切记用不好这里是大坑。

浅谈python正则的常用方法 覆盖范围70%以上

当然解决的办法就你要取几位数就写几个\d,上面这里演示取字符串中3位数字,这里展现了正则灵活一方面。

浅谈python正则的常用方法 覆盖范围70%以上

这里小d表示取数字0-9,大D表示不要数字,也就是出了数字以外的内容返回。

浅谈python正则的常用方法 覆盖范围70%以上

“\w”在正则里面代表匹配从小写a到z,大写A到Z,数字0到9包含前面这三种的如上面打印的一样.

浅谈python正则的常用方法 覆盖范围70%以上

"\W"在正则里面代表匹配除了字母与数字以外的特殊符号,但这里\斜杠的用法要注意在字符串\是转义符号具体百度去学。

浅谈python正则的常用方法 覆盖范围70%以上

这里括号()的用法表示匹配是取括号内里面的内容,这里.*是正则贪婪匹配语法百话点就是贪心利益最大话最大范围的匹配准则如上图所示。

浅谈python正则的常用方法 覆盖范围70%以上

这里加了个问号.*?就是限制它不让他最大范围的匹配也叫非贪婪模式匹配。结果是把两个div内的内容匹配返回。

浅谈python正则的常用方法 覆盖范围70%以上

这里加re.I(大写的i)表示匹配无论公的母的大小写都通吃都要,不然后面有大小写就会出现上面匹配找不到返回空列表给你。

浅谈python正则的常用方法 覆盖范围70%以上

这里又搞事了就是\n俗称换行符,一旦换行程序就SB了不认了,所以我们加上了re.S(大写)这样代表比匹配包括换行在内的所有字符内容返回,基本你把上面的语法和用法学会后基本70%以上匹配方法全都搞定,当然还有很方法我就不列举了,大家可以自己去学习(剩下的基本我都很少用到了)。

2.match和search的用法及区别:

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。re.search 扫描整个字符串并返回第一个成功的匹配。来看看代码就容易理解了。如下:

浅谈python正则的常用方法 覆盖范围70%以上

这里直接打印结尾加上.span()可以得到匹配字符串的位置以元组tuple返回(起始位置,结束位置),有一个没写,因为他返回空加上会编译器报错。

浅谈python正则的常用方法 覆盖范围70%以上

是不是一目了然,match只会开头匹配,找不到就返回None,这里我没加.group()是因为返回值是空值我加了编译器会报错,search不挑食扫描整个字符串,当然里面也可以用上面的正则方法去匹配,这里就不过多介绍了大家可以动手练练。

3.sub替换的用法

sub用于替换字符串中的匹配项,语法一般是re.sub(r'正则匹配规则','替换的字符串',需要检索的字符串)

浅谈python正则的常用方法 覆盖范围70%以上

这里很直观的反应了结果,把#号及后面的字符串替换想要改的字符串。

4.最后福利

在给最后福利之前,希望大家能多练练上面的用法和使用规则,只有多出错多总结才会积累经验,最后的福利讲给大家几个常用的邮箱匹配规则如下:

浅谈python正则的常用方法 覆盖范围70%以上

必杀技能最后送了合体多种匹配或者发|用来匹配多个不同的邮箱使用,大家只要用熟以上的方法保守70%以上的地方都能够使用到,最后声明只是小弟个人理解分享,大佬们忽略就忽略吧,谢谢,最后还还是老台词:感谢观看,下次再见!

Python 相关文章推荐
简单介绍Python中的readline()方法的使用
May 24 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
Jun 14 Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
Mar 11 Python
Python实现解析Bit Torrent种子文件内容的方法
Aug 29 Python
对Python3+gdal 读取tiff格式数据的实例讲解
Dec 04 Python
python快排算法详解
Mar 04 Python
python3的UnicodeDecodeError解决方法
Dec 20 Python
Python编程快速上手——强口令检测算法案例分析
Feb 29 Python
Jupyter加载文件的实现方法
Apr 14 Python
简单了解Django项目应用创建过程
Jul 06 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
Sep 15 Python
用Python爬取英雄联盟的皮肤详细示例
Dec 06 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
Mar 14 #Python
Python使用matplotlib绘制余弦的散点图示例
Mar 14 #Python
使用Python从零开始撸一个区块链
Mar 14 #Python
Python使用matplotlib绘图无法显示中文问题的解决方法
Mar 14 #Python
Django中url的反向查询的方法
Mar 14 #Python
python ddt实现数据驱动
Mar 14 #Python
Python使用Django实现博客系统完整版
Sep 29 #Python
You might like
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
mysql下创建字段并设置主键的php代码
2010/05/16 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
Use Word to Search for Files
2007/06/15 Javascript
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
用js控制组织结构图可以任意拖拽到指定位置
2014/01/17 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
对于js垃圾回收机制的理解
2017/09/14 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
2017/09/20 jQuery
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
2018/10/18 Javascript
Vue.use()在new Vue() 之前使用的原因浅析
2019/08/26 Javascript
实现vuex与组件data之间的数据同步更新方式
2019/11/12 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
python 实现判断ip连通性的方法总结
2018/04/22 Python
Python使用re模块实现信息筛选的方法
2018/04/29 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
Python包和模块的分发详细介绍
2020/06/19 Python
Python 代码调试技巧示例代码
2020/08/11 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
报关简历自我评价怎么写
2013/09/19 职场文书
服装设计专业毕业生推荐信
2013/11/09 职场文书
个人求职简历中英文自我评价
2013/12/16 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
Java基础之this关键字的使用
2021/06/30 Java/Android
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android