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模块的更多相关文章

  1. Python标准模块--threading

    1 模块简介 threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版.threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作. 不过请注意,P ...

  2. Python的模块引用和查找路径

    模块间相互独立相互引用是任何一种编程语言的基础能力.对于“模块”这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中 ...

  3. Python Logging模块的简单使用

    前言 日志是非常重要的,最近有接触到这个,所以系统的看一下Python这个模块的用法.本文即为Logging模块的用法简介,主要参考文章为Python官方文档,链接见参考列表. 另外,Python的H ...

  4. Python标准模块--logging

    1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同 ...

  5. python基础-模块

    一.模块介绍                                                                                              ...

  6. python 安装模块

    python安装模块的方法很多,在此仅介绍一种,不需要安装其他附带的pip等,python安装完之后,配置环境变量,我由于中英文分号原因,环境变量始终没能配置成功汗. 1:下载模块的压缩文件解压到任意 ...

  7. python Queue模块

    先看一个很简单的例子 #coding:utf8 import Queue #queue是队列的意思 q=Queue.Queue(maxsize=10) #创建一个queue对象 for i in ra ...

  8. python logging模块可能会令人困惑的地方

    python logging模块主要是python提供的通用日志系统,使用的方法其实挺简单的,这块就不多介绍.下面主要会讲到在使用python logging模块的时候,涉及到多个python文件的调 ...

  9. Python引用模块和查找模块路径

    模块间相互独立相互引用是任何一种编程语言的基础能力.对于"模块"这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译 ...

  10. Python Paramiko模块与MySQL数据库操作

    Paramiko模块批量管理:通过调用ssh协议进行远程机器的批量命令执行. 要使用paramiko模块那就必须先安装这个第三方模块,仅需要在本地上安装相应的软件(python以及PyCrypto), ...

随机推荐

  1. 方法的重写与重载的区别(Override与Overload)。重载的方法是否可以改变返回值的类型

    方法的重写(Override)与重载(Overload)的区别.重载的方法是否可以改变返回值的类型?[基础] 解释: 方法的重写overriding和重载Overloading是Java多态性的不同表 ...

  2. 《深入理解计算机系统》第7章:重定位PC相对引用的理解

    在第七章<链接>中的静态链接有对符号进行重定位PC相对引用的处理,书上对应的还有公式,但不是很好理解.现做实验对公式进行理解(公式内容如有兴趣可以参考原文)

  3. Spring配置文件中如何使用外部配置文件配置数据库连接

    直接在spring的配置文件中applicationContext.xml文件中配置数据库连接也可以,但是有个问题,需要在url后带着使用编码集和指定编码集,出现了如下问题,&这个符号报错-- ...

  4. Http最常见的错误代码

    1XX 表示消息 2XX 表示成功 3XX 表示重定向 4XX 表示请求错误 5XX 表示服务器端错误 我们最常见的就是: 404(页面找不到),这个错误代码是由于我们输入的网址不对造成的,浏览器找不 ...

  5. 【眼见为实】自己动手实践理解READ COMMITTED && MVCC

    [眼见为实]自己动手实践理解 READ COMMITTED && MVCC 首先设置数据库隔离级别为读已提交(READ COMMITTED): set global transacti ...

  6. php中heredoc与nowdoc的使用方法

    一.heredoc结构及用法 Heredoc 结构就象是没有使用双引号的双引号字符串,这就是说在 heredoc 结构中单引号不用被转义.其结构中的变量将被替换,但在 heredoc 结构中含有复杂的 ...

  7. node.js应用脚手架:koa2、sequelize、mysql

    自制了一个 nodejs 应用的脚手架. 基于 koa2 的,所以需要保证 node 环境至少为 7.6.0 吸取了以前的踩坑教训,添加了守护进程,确保应用不会因为异常导致网站直接挂掉(使用了 for ...

  8. C语言程序设计(基础)- 第14、15周作业

    从本周开始,将作业标记为学校自然周,而不是开课的周数. 要求一(25经验值) 完成14.15周的所有PTA中题目集. 注意1:一周两次pta作业,包括四次. 要求二(50经验值) 博客的具体书写内容和 ...

  9. 2017-2018-1 Java演绎法 第三周 作业

    团队任务:团队展示与选题 团队展示 队员学号及姓名 学号 姓名 主要负责工作 20162315 马军 日常统计,项目部分代码 20162316 刘诚昊 项目部分代码,代码质量测试 20162317 袁 ...

  10. 《高级软件测试》web测试实践--12月31日记录

    今日的任务进度如上图所示.我们对华科软件学院和计算机学院的网站进行了对比分析,分析的角度包括基本功能分析.前端性能分析.用户调研等.在这里我们简单总结下我们得到的评测结果. 基本功能分析:计算机学院和 ...