python浅谈正则的常用方法

时间:2022-09-25 14:16:32

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

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

1.正则的简单介绍

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

2.findall的常用几种姿势

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

python浅谈正则的常用方法

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

python浅谈正则的常用方法

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

python浅谈正则的常用方法

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

python浅谈正则的常用方法

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

python浅谈正则的常用方法

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

python浅谈正则的常用方法

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

python浅谈正则的常用方法

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

python浅谈正则的常用方法

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

python浅谈正则的常用方法

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

python浅谈正则的常用方法

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

python浅谈正则的常用方法

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

python浅谈正则的常用方法

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

python浅谈正则的常用方法

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

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

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

python浅谈正则的常用方法

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

python浅谈正则的常用方法

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

3.sub替换的用法

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

python浅谈正则的常用方法

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

4.最后福利

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

python浅谈正则的常用方法

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

python浅谈正则的常用方法的更多相关文章

  1. Python 浅谈注释的重要性

    最近参加了一个比赛,然后看到队友编程的代码,我觉得真的是难以下咽,几乎每个字符都要咨询他,用老师的话来说,这就是山炮编程员,所以此时的我意识到写一篇关于注释程序的重要性了,因此特地的写一篇文章帮助大家 ...

  2. Python 浅谈编程规范和软件开发目录规范的重要性

    最近参加了一个比赛,然后看到队友编程的代码,我觉得真的是觉得注释和命名规范的重要性了,因为几乎每个字符都要咨询他,用老师的话来说,这就是命名不规范的后续反应.所以此时的我意识到写一篇关于注释程序的重要 ...

  3. python浅谈编程规范和软件开发目录规范的重要性

    前言 我们这些初学者,目前要做的就是遵守代码规范,这是最基本的,而且每个团队的规范可能还不一样,以后工作了,尽可能和团队保持一致,目前初学者就按照官方的要求即可 新人进入一个企业,不会接触到核心的架构 ...

  4. Python浅谈requests三方库

    requests 三方库用于获取URL资源 1.GET请求访问一个页面 import requests r = requests.get('https://www.cnblogs.com/xqxacm ...

  5. Python - 浅谈Python的编译与反编译

    1 - Python编译过程涉及的文件 py 源代码文件,由python.exe解释,可在控制台下运行,可用文本编辑器进行编辑: pyc 源代码文件经过编译后生成的二进制文件,无法用文本编辑器进行编辑 ...

  6. python 浅谈小数据池和编码

    ⼀. ⼩数据池 在说⼩数据池之前. 我们先看⼀个概念. 什么是代码块: 根据提示我们从官⽅⽂档找到了这样的说法: A Python program is constructed from code b ...

  7. python 浅谈字典dict

    一.字典简介 字典(dict)是python中唯一的映射类型,他是以{ }括起来的键值对组成,在dict中的key是唯一的.在保存的时候,根据key来计算出一个内存地址.然后将key-value保存在 ...

  8. Python | 浅谈并发锁与死锁问题

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题的第24篇文章,我们一起来聊聊多线程场景当中不可或缺的另外一个部分--锁. 如果你学过操作系统,那么对于锁应该不陌生. ...

  9. 浅谈五大Python Web框架

    转载:http://feilong.me/2011/01/talk-about-Python-web-framework 说到Web Framework,Ruby的世界Rails一统江湖,而Pytho ...

随机推荐

  1. RF Firefox Profile

    默认情况下,robot framework是启动不带任何配置信息的firefox,如果需要启动带有profile的话,增加一个参数即可,如 Open Browser https://aws-qa5.i ...

  2. 配置oozie4.10+hadoop2.5.2

    终于将这个神秘的寻象人 oozie 安装配置成功了,这个困扰我好几天, 当看到如下的画面, 我觉得值! 废话少说,看我如何编译和安装过程: (已经将hadoop2.5.2HA 的环境搭建起来了,hiv ...

  3. js使用Switch达到切换不同颜色的效果

    实现的效果,点击哪个,哪个变颜色,效果如下. 代码如下: <!DOCTYPE html> <html> <head> <meta charset=" ...

  4. MySQL数据库从GBK转换到UTF-8最简单解决方案(也适用于其它编码转换)

    1.使用mysqldump导出表结构,如: mysqldump -d -u root -p 数据库名 >/root/struct.sql 2.使用mysqldump以特定编码导出数据(其中utf ...

  5. C&num;中使用visio控件

    C#中使用visio控件 2012-08-25 18:14:19|  分类: 技术相关|举报|字号 订阅     其实就是C#访问VISIO的自动化模型,以前做了不少C#和Excle及word 的交互 ...

  6. WCF 传输的序列化

    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService”.[ServiceContract]public interface IService{ [O ...

  7. Android Broadcast管理

  8. openfire spark 二次 开发 服务插件

    ====================  废话 begin   ============================ 最近老大让我为研发平台增加即时通讯功能.告诉我用comet 在web端实现即 ...

  9. zoj3747(递推dp)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5170 题意:给n个士兵排队,每个士兵三种G.R.P可选,求至少有m个 ...

  10. 量化投资与Python之pandas

    pandas:数据分析 pandas是一个强大的Python数据分析的工具包.pandas是基于NumPy构建的. pandas的主要功能具备对其功能的数据结构DataFrame.Series集成时间 ...