python——re模块
python——re模块
一 正则表达式的作用
1、给字符串进行模糊匹配,
2、对象就是字符串
二 字符匹配(普通字符、元字符)
普通字符:数字字符和英文字母和自身匹配
2.元字符:. ^ $
* + ? {} [] () | \
re.方法("规则","匹配的字符串")
re.findall() 找到所有的匹配元素,返回一个列表
. 匹配任意一个字符,除了\n换行符
^ 从字符串开始匹配的位置
print(re.findall("a..c","abbc"))
# ['abbc']
$ 从字符串结尾匹配
print(re.findall("alex$","yuanegonalex"))
# ['alex']
* + ? {} :重复
* 匹配所有[0 -00] 0-无穷次
print(re.findall("ale*","yuanalexxxx"))
# ['ale']
+ 匹配范围[1-oo] 1-无穷次
print(re.findall("alex+","yuanegongalex"))
# ['alex']
? 匹配范围[0-1] 0-1次
print(re.findall("alex?","yuanegongalexxxx"))
# ['alex']
{}万能的 范围自己定{0,无穷次}==* {1,无穷次}==+ {0,1次}==?
print(re.findall("alex{1,4}","yuanalexxxxxx"))
# ['alexxxx']
() 分组
print(re.findall("(ad)+yuan","addddyuansdf"))
# 空值[]
print(re.findall("(ad)+yuan","adadyuangfsdui"))#优先匹配(ad)
# ['ad']
?:取消优先级
print(re.findall("(?:ad)+yuan","adadyuangfsdui")) # ?:取消优先级
# ['adadyuan']
print(re.findall("(\d)+yuan","adad678423yuang4234fsdui"))#默认最后一个数字
# ['3']
print(re.findall("(?:\d)+yuan","adad678423yuang4234fsdui")) #取消优先级
# ['678423yuan']
[] 字符集合设定符
1.或的功能 字符集里面特殊意义的 [-] [^] [\]
2.注意:* ,+ ,. 等元字符都是普通符号
print(re.findall('a[bc]d','acdabd')) #或的意思
# ['acd', 'abd']
print(re.findall('[a-z]','acd'))
# ['a', 'c', 'd']
print(re.findall('[.*+]','a.cd+')) #把.和+匹配出来
# ['.', '+']
特殊意义的 [-] [^] [\]
print(re.findall('[1-9]','45dha3')) #取1至9的数字
# ['4', '5', '3']
print(re.findall('[^ab]','45bdha3'))#取ab以外的字母及数字
# ['4', '5', 'd', 'h', '3']
print(re.findall('[\d]','45bdha3'))#取所有的数字
# ['4', '5', '3']
\ 或的意思
print(re.findall("www\.(?:oldboy|baidu)\.com","www.oldboy.com"))
# ['www.oldboy.com']
\ :转义
1 后面加一个元字符使其变成普通符号
2 将一些普通符号编程特殊符号 比如 \d \w
print(re.findall("\d+\*\d+","2*6+7*45+4*3-8/4")) #取出乘法
# ['2*6', '7*45', '4*3']
print(re.findall("\d+\.?\d*\*\d+\.?\d*","2*6+7*45+1.4*3-8/4")) #取出带有小数点的乘法
# ['2*6', '7*45', '1.4*3']
三 元字符之转义符\
反斜杠后边跟元字符去除特殊功能,比如\.
反斜杠后边跟普通字符实现特殊功能,比如\d
\d 匹配任何十进制数;它相当于类
[0-9]。
\D 匹配任何非数字字符;它相当于类
[^0-9]。
\s 匹配任何空白字符;它相当于类
[ \t\n\r\f\v]。
\S 匹配任何非空白字符;它相当于类
[^ \t\n\r\f\v]。
\w 匹配任何字母数字字符;它相当于类
[a-zA-Z0-9_]。
\W 匹配任何非字母数字字符;它相当于类
[^a-zA-Z0-9_]
\b 匹配一个特殊字符边界,比如空格 ,&,#等
四 正则表达式方法
re.findall() ---->列表 查找
re.finditer 可调用的迭代器 查找
s=re.finditer("\d+","ad324das32")
print(s)
print(next(s).group())
print(next(s).group())
# 324
# 32
search 只匹配第一个结果 查找
ret=re.search("\d+","djksf34asd3")
print(ret.group())
# 34
match: 只在字符串开始的位置匹配 查找
ret=re.match("\d+","423dgssdf34dsfd3")
print(ret.group())
# 423
split 分割
s2=re.split("\d+","fsd3445sdfdss54skf4533sd")
print(s2)
# ['fsd', 'sdfdss', 'skf', 'sd'] s2=re.split("\d+","fsd3445sdfdss54skf4533sd",2) #最大值分割
print(s2)
# ['fsd', 'sdfdss', 'skf4533sd'] ret3=re.split("l","hello yuan")
print(ret3)
# ['he', '', 'o yuan']
sub 替换
ret4=re.sub("\d+","A","hello 234jkhh23")
print(ret4)
# hello AjkhhA ret4=re.sub("\d+","A","hello 234jkhh23",1)
print(ret4)
# hello Ajkhh23
compile :编译方法
c=re.compile("\d+")
ret5=c.findall("hello32world53") #查找这些数字
print(ret5)
# ['32', '53']
python——re模块的更多相关文章
- Python标准模块--threading
1 模块简介 threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版.threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作. 不过请注意,P ...
- Python的模块引用和查找路径
模块间相互独立相互引用是任何一种编程语言的基础能力.对于“模块”这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中 ...
- Python Logging模块的简单使用
前言 日志是非常重要的,最近有接触到这个,所以系统的看一下Python这个模块的用法.本文即为Logging模块的用法简介,主要参考文章为Python官方文档,链接见参考列表. 另外,Python的H ...
- Python标准模块--logging
1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同 ...
- python基础-模块
一.模块介绍 ...
- python 安装模块
python安装模块的方法很多,在此仅介绍一种,不需要安装其他附带的pip等,python安装完之后,配置环境变量,我由于中英文分号原因,环境变量始终没能配置成功汗. 1:下载模块的压缩文件解压到任意 ...
- python Queue模块
先看一个很简单的例子 #coding:utf8 import Queue #queue是队列的意思 q=Queue.Queue(maxsize=10) #创建一个queue对象 for i in ra ...
- python logging模块可能会令人困惑的地方
python logging模块主要是python提供的通用日志系统,使用的方法其实挺简单的,这块就不多介绍.下面主要会讲到在使用python logging模块的时候,涉及到多个python文件的调 ...
- Python引用模块和查找模块路径
模块间相互独立相互引用是任何一种编程语言的基础能力.对于"模块"这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译 ...
- Python Paramiko模块与MySQL数据库操作
Paramiko模块批量管理:通过调用ssh协议进行远程机器的批量命令执行. 要使用paramiko模块那就必须先安装这个第三方模块,仅需要在本地上安装相应的软件(python以及PyCrypto), ...
随机推荐
- Android轮播图
轮播图是很常用的一个效果 核心功能已经实现 没有什么特殊需求 自己没事研究的 所以封装的不太好 一些地方还比较糙 为想要研究轮播图的同学提供个参考目前测试图片为mipmap中的图片 没有写从网络加载图 ...
- 如何写对kubernetes的模板文件
kubernetes的模板配置文件随着版本更迭也会有相应的调整,正确配置模板关键字的方式是参考版本发布的doc,如下图 在docs\api-reference下面有不同功能的API目录,如下图 各个A ...
- 基于 CDH 构建推荐系统
我理解的推荐系统本质是一种排序方式.排序的规则是按照我们预测的用户喜好程度的一个排序的列表,而如何定义用户的喜好程度是推荐系统要解决的核心问题.机器学习的算法只是推荐系统的一部分.构建一个完整的推荐系 ...
- ASP.NET Core Web 支付功能接入 微信-扫码支付篇
这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入微信-扫码支付及异步通知功能. 开发环境:Win 10 x64.VS2017 15.6.4..NET Core SDK ...
- struts2和spring mvc的区别
在项目中使用struts2和spring mvc为了实现后台的业务代码和前台数据之间的传递,现在基本上不会有用struts2的了,几次面试问的最多的关于struts2的问题就是struts2和spri ...
- spring Boot+spring Cloud实现微服务详细教程第一篇
前些天项目组的大佬跟我聊,说项目组想从之前的架构上剥离出来公用的模块做微服务的开发,恰好去年的5/6月份在上家公司学习了国内开源的dubbo+zookeeper实现的微服务的架构.自己平时对微服务的设 ...
- MySQL基本语句与经典习题
[SQL语句大全] 本文用到的数据(5张表): customers: orders: orderitems: Products: Vendors: 一.检索数据-select语句select pro ...
- shell脚本里获取字符串的最后一个字符
STR=123456abc FINAL=`echo ${STR: -1}` 或者 FINAL=${STR: -1} 都可以让FINAL获得c这个最后一个字符
- SQL注入之Sqli-labs系列第三篇
废话不在多说 let's go! 继续挑战第三关(Error Based- String) 1.访问地址,加入参数后 and 1=1和and 1=2进行测试,木有任何动静 2.再使用 ' 出现报 ...
- 配置COCO API(安装COCO)
仍旧是win10,Python3.5 从GitHub下载coco源码,解压到任意文件夹.(或者创建一个工程)coco源码链接 https://github.com/cocodataset/cocoap ...