正则表达式:就是用来筛选字符串中特定内容的一串具有某种逻辑规则的字符组成。正则表达式不是Python独有的,而是一门独立的技术,它在所有的编程语言中都有使用,在Python中使用就必须依赖于re模块。正则的应用场景:比如,爬虫,数据分析。

正则的使用某些特定逻辑的字符构造的代码,可以简化我们的代码的冗余。看以下二图,请做比较。

正则表达式匹配字符串规则:

字符组 [   ]   一个字符串里面的表达式都是或的关系
[0-9]  表示匹配0~9的数字,中括号内部数字之间是或的关系,只要有一个数字能对应到0~9的任意一个数字都认为匹配成功。也可以写成[0123456789]的形式

[a-z] 匹配小写字母

[A-Z]匹配大写字母

[0-9a-fA-F] 可以匹配数字大小写形式的a-f,用来验证十六进制字符

元字符:

^与$连用,能实现精准的匹配,^与$之间是什么内容,匹配的内容就必须写什么内容;比如,^ab$,则待匹配的内容也必须是ab

^[和],表示第一个字符是以‘和’开头的;[^和]表示除了括号内的任意字符串

abc|ab 一定要将长的正则放在|前面短的放在后面,不然两个字符串极尽相似,长的字符串在后面被前面短的字符串匹配成功一部分,就相当于把长字符串切成了两部分,匹配不上的舍弃掉了,后面长的就匹配不上了。

       

正则在匹配的时候默认都是贪婪匹配(尽量匹配多的),你可以通过在量词后面加上一个?就可以将贪婪匹配变成非贪婪匹配(惰性匹配)

量词必须跟在正则符号的后面,量词只能能够限制紧挨着它的那一个正则符号

分组:当多个正则符号需要重复多次的时候或者当做一个整体进行其他操作,那么可以分组的形式,分组在正则的语法中就是使用小括号()

正则事例:

    

re模块下的常用方法:

python使用正则必须借助于re模块 或者是支持正则表达式书写的方法

import  re(使用re模块,首先先导入)

re模块下内置的方法:

re.findall(打印直接取值)

re.search (有匹配的结果时,返回的是一个对象,还需调用.group()才能取值)

re.match(同search)

split

sub

subn

compile

finditer

1), re.findall   表达式为: findall('正则表达式','带匹配的字符串')    找出字符串中符合正则表达式全部内容 并且返回的是一个列表,列表中的元素就是正则匹配到的结果。

2),re.search   表达式为: search('正则表达式','带匹配的字符串'),   如果对象存在,不会给你直接返回匹配到的结果 ,而是给你返回一个对象,必须调用group才能看到匹配到的结果。如果匹配不到,返回none, 调用group直接报错。search只会依据正则查一次 只要查到了结果 就不会再往后查找。

3), match

1.match只会匹配字符串的开头部分
2.当字符串的开头不符合匹配规则的情况下 返回的也是None 调用group也会报错

split  在re下的split表示切除的意思,切除之后生成的是一个列表

sub(能用正则将字符串中的数字替换掉,返回一整个字符串)  sub的表达式re.sub('正则表达式','新的内容','待替换的字符串',n),n代表要替换字符串中数字的个数

subn   返回的是一个元组 元组的第二个元素代表的是替换的个数

compile

re.compile 下再调用findall,结果生成按我们指定的只能重复三个数字,切分成列表。

finditer (就是一个迭代器)  re.finditer('正则’,‘字符串’).__next__.group(),当取出所有值,就会报错

还可以给某一个正则表达式起别名

在Python里的分组,与正则无关。这是因为findall会优先把匹配结果组里内容返回,如果想要匹配结果,取消权限即可。

re模块和正则的更多相关文章

  1. python——re模块(正则表达)

    python——re模块(正则表达) 两个比较不错的正则帖子: http://blog.csdn.net/riba2534/article/details/54288552 http://blog.c ...

  2. 常用的re模块的正则匹配的表达式

    07.01自我总结 常用的re模块的正则匹配的表达式 一.校验数字的表达式 1.数字 ^[0-9]\*$ 2.n位的数字 ^\d{n}$ 3.至少n位的数字 ^\d{n,}$ 4.m-n位的数字 ^\ ...

  3. 模块 re_正则

    模块re_正则 讲正题之前我们先来看一个例子:https://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/ 这是京东的注册页面,打开页面我 ...

  4. python--------------常用模块之正则

    一.认识模块  什么是模块:一个模块就是一个包含了python定义和声明的文件,文件名就是加上.py的后缀,但其实import加载的模块分为四个通用类别 : 1.使用python编写的代码(.py文件 ...

  5. 爬虫模块介绍--Beautifulsoup (解析库模块,正则)

    Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时 ...

  6. python常用模块之re模块(正则)

    python种的re模块常用的5种方法,分别是re.match   re.search  re.findall  re.split  re.sub. 在介绍五种方法之前,需要介绍一下正则的基础. . ...

  7. python全栈开发从入门到放弃之常用模块和正则

    什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.p ...

  8. python模块之正则

    re模块 可以读懂你写的正则表达式 根据你写的表达式去执行任务 用re去操作正则 正则表达式 使用一些规则来检测一些字符串是否符合个人要求,从一段字符串中找到符合要求的内容.在线测试网站:http:/ ...

  9. Python模块(三)(正则,re,模块与包)

    1. 正则表达式 匹配字符串 元字符 .   除了换行 \w  数字, 字母, 下划线 \d  数字 \s  空白符 \n 换行符 \t  制表符 \b  单词的边界 \W  \D \S 非xxx [ ...

随机推荐

  1. python学习之内置函数(一)

    4.7 内置函数 4.7.1 内置函数(1) eval 执行字符串类型的代码,并返回最终结果. eval('2 + 2') # 4 n=81 eval("n + 4") # 85 ...

  2. ELK+Kafka

    kafka:接收java程序投递的消息的日志队列 logstash:日志解析,格式化数据为json并输出到es中 elasticsearch:实时搜索搜索引擎,存储数据 kibana:基于es的数据可 ...

  3. win10电脑休眠后无法唤醒的解决办法

    电脑的休眠功能,为长时间不用的电脑进行了关闭显示.硬盘停转的深度节能模式,不仅节约能源,还保护设备. 但有些时候也会出现一些问题,如休眠后无法唤醒,无法移动鼠标,敲击键盘都无效,最后只能长按电源键来强 ...

  4. 列出连通集(DFS及BFS遍历图) -- 数据结构

    题目: 7-1 列出连通集 (30 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递 ...

  5. 02: kubernetes安装

    参考官网:http://docs.kubernetes.org.cn/ 1.1 集群部署 1.集群结构 192.168.56.11 linux-node1 linux-node1.example.co ...

  6. transition 带的参数什么意思

    过渡transition:属性名  过渡效果时间 时间速度曲线  开始时间        默认值:    all              0                            e ...

  7. Vue源码解析:AST语法树转render函数

    开始 今天要说的代码全在codegen文件夹中,在说实现原理前,还是先看个简单的例子! <div class="container"> <span>{{ms ...

  8. 01Spring基于xml的IOC配置--入门

    01Spring基于xml的IOC配置 1.创建一个普通的maven工程 1.1 选择maven,不用骨架,点击下一步. 1.2 填写GroupId.ArtifactId.Version.填完点击下一 ...

  9. Java Blob类型和String类型相互转换

    1.String 转 Blob: String content = "Hello World!"; Blob blob = Hibernate.createBlob(content ...

  10. js获取两个经纬度之间的角度(0度-360度)

    /** * 获取角度 */mapNumberUtil.getAngle = function(lng_a,lat_a, lng_b, lat_b){ var a = (90 - lat_b) * Ma ...