正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序员们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。

re的匹配语法  %re.name("匹配规则", "要匹配的字符串")

re.match() 从头开始匹配,即只匹配第一个值
re.search() 匹配包含,匹配到第一个就不往下匹配
re.findall() 把所有匹配到到的字符以列表的形式返回
re.splital() 以匹配到的字符当做列表分隔符
re.sub () 匹配字符并替换
re.fullmatch() 全部匹配

>>> import re
>>> a = 'a2fho54d'
>>> re.match('[0-9]',a)
>>> re.match('a',a)
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> re.search('[0-9]',a)
<_sre.SRE_Match object; span=(1, 2), match='2'>
>>> re.findall('[0-9]',a)
['2', '5', '4']

View Code

如何将match和search方法返回的对象打印出来呢?

import re
a = 'a2fho54d'
re_res = re.search('[0-9]', a)
if re_res:print(re_res.group())  ##############
2

View Code

(二)常用正则表达式符号
  1. '.'     默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
  2. '^'     匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE)
  3. '$'     匹配字符结尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以
  4. '*'     匹配*号前的字符0次或多次,re.findall("ab*","cabb3abcbbac")  结果为['abb''ab''a']
  5. '+'     匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 结果['ab''abb']
  6. '?'     匹配前一个字符1次或0
  7. '{m}'   匹配前一个字符m次
  8. '{n,m}' 匹配前一个字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 结果'abb''ab''abb']
  9. '|'     匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 结果'ABC'
  10. '(...)' 分组匹配,re.search("(abc){2}a(123|456)c""abcabca456c").group() 结果 abcabca456c

'\d'   匹配任何十进制数,它相当于类[0-9]
'\d+'  如果需要匹配一位或者多位数的数字时用
'\D'   匹配任何非数字字符,它相当于类[^0-9]
'\s'    匹配任何空白字符,它相当于类[\t\n\r\f\v]
'\S'    匹配任何非空白字符
'\w'      匹配包括下划线在内任何字母数字字符,它相当于类[a-zA-Z0-9_]
'\W'    匹配非任何字母数字字符包括下划线在内,它相当于类[^a-zA-Z0-9_]

操作代码如下:

>>> import re
>>> re.match('.','fjfi34')
<_sre.SRE_Match object; span=(0, 1), match='f'>
>>> re.match('.','383449')
<_sre.SRE_Match object; span=(0, 1), match='3'>
>>> re.match('.','\fjidak')
<_sre.SRE_Match object; span=(0, 1), match='\x0c'>

>>> re.match('..','abdf')
  <_sre.SRE_Match object; span=(0, 2), match='ab'>

>>> re.search('^a','abgd')   #表示匹配以a开头
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> re.search('^ab','abghus')    #此时等价于re.match('ab','abhufjj')
<_sre.SRE_Match object; span=(0, 2), match='ab'>
>>> re.search('^b','abghuus')    #匹配不上
>>>

>>> re.search('b$','fsffb')   #表示匹配以b结尾
<_sre.SRE_Match object; span=(4, 5), match='b'>

>>> re.search('a*','fhsbs')   #表示匹配*前面的字符多次或0次
<_sre.SRE_Match object; span=(0, 0), match=''>
>>> re.search('a*','afhusd')
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> re.search('abc*','abchuccabcccug')   #a必须匹配和b连着,b可以是0个或多个
<_sre.SRE_Match object; span=(0, 3), match='abc'>

......................

转载于:https://www.cnblogs.com/ydb258741/p/9240499.html

pyhton re模块相关推荐

  1. paramiko模块_玩转网络自动化之Netmiko模块

    我们知道,服务器的硬件和操作系统软件已经完全解耦,硬件和软件可以分开购买,并进行按需安装. 但是网络设备专用性强,硬件和操作系统软件高度耦合,即使相同厂商的设备,不同类型网络设备间也是拥有不同的CLI ...

  2. python从键盘上输入五个数字打一成语_批量查询5个字成语首字母组成的.com域名...

    .com域名无疑是最受欢迎的后缀,1至4个字母的组合已全部被抢注.好奇心驱使下,写了Python程序批量查询5个字成语首字母组成的.com域名的注册情况. 步骤1:抓取5个字的成语 详情见博文< ...

  3. Pyhton 内置 itertools 模块chain、accumulate、compress、drop、take等函数使用

    Python 内置的 itertools 模块使用了 yield 生成器. 1. chain 拼接迭代器 chain 函数实现元素拼接,原型如下,参数 * 表示可变的参数: chain(*iterab ...

  4. Pyhton 模块和包

    模块 每一个以扩展名 py 结尾额 Python 源代码文件都是一个模块 模块名 同样也是一个标识符,需要符合标识符的命名规则 在模块中定义的 全局变量.函数.类 都是提供给外接直接使用的工具 模块的 ...

  5. pyhton学习,day1作业,用户名密码登录模块

    要求,通过用户名密码登录,登录错误3次,锁定用户名 1 # coding=utf-8 2 # Author: RyAn Bi 3 4 import os, sys #调用系统自己的库 5 6 acco ...

  6. python基础知识整理 第七节:单例设计模式、异常、模块、包、制作模块、文件

    1.单例设计模式 单例设计模式就是为对象在内存中分配空间的时候,永远只会返回一个唯一的固定的内存空间.这样就能保证在内存中这个类的对象只有唯一的一份,这个就叫做单例.(为对象分配空间使用的是内置方法_ ...

  7. python安装pillow模块错误

    安装的一些简单步骤就不介绍了,可以去搜索一下,主要就记录下我在安装pillow这一模块遇到的问题 1:安装好pillow后,安装过程没有出错 2:但是在python的IDLE输入from PIL im ...

  8. python 并行计算 multiprocessing、multiprocess模块 简介

    目录 多进程才是真·并行 multiprocessing模块 1.创建子进程 2.进程间通信--数据共享 3.进程间通信--数据传递 4.锁(同步原语) 5.其他重要函数 multiprocess模块 ...

  9. 日常办公会用到的python模块-用 Python 自动化办公能做到哪些有趣或有用的事情?...

    所有需要重复做两次的事情,都可以用程序代替我来完成. 场景1: 微信上处理的事情有很多都是重复的,又经常容易被这些琐事打断.于是我在 Python 程序里设定了一些关键词和相应的自动回复: /> ...

最新文章

  1. MATLAB从入门到精通-最速下降算法、牛顿算法、BFGS拟牛顿算法、共轭梯度算法无约束极值问题
  2. Android mergeDebugResources'. Error: java.util.concurrent.ExecutionException: com.android.ide.comm
  3. mysql把一个字段加到另一张表中_mysql如何能把一个表中的某一字段下的数据加入另一个表中相同字段下,条件是两表中的某字段相同?...
  4. Ruby-Metasploit的核心
  5. python淘宝cookies抢购_Python实现淘宝秒杀聚划算抢购自动提醒源码
  6. Mars的mp3实例
  7. testservice小项目总结
  8. Scrapy: 爬虫返回403错误
  9. Django入门:第十一章、基础模板
  10. JavaWeb kuangshen汇总
  11. C文件操作——字符 读写函数 getc和putc(是一个宏的实现)
  12. 只用html如何实现音乐播放,如何使用html实现音乐播放
  13. 怎样批量修改文件名不要括号?
  14. 【程序设计基础 学习笔记】单向链表(TBC)
  15. 2020-10-18Go语言接口
  16. AS 5637.1跟AS 3837是什么关系?
  17. Day16 正则表达式
  18. 为什么工业互联网平台要配备MQTT网关?
  19. 在一页纸上打印8页PPT讲义的方法
  20. 【概率论与数理统计】第二章知识点复习与习题

热门文章

  1. Go 知识点(13) — 如何判断变量类型
  2. Python 标准库之 subprocesss
  3. LeetCode简单题之赎金信
  4. Conda安装Glossary词汇表
  5. Ascend Pytorch算子功能验证
  6. 单目摄像头标定与测距
  7. 机器学习算法的优点和缺点总结
  8. Django 定义模型2.1
  9. [JAVA EE]Spring Boot 控制层:参数传递方法
  10. Androidx FloatingActionButton 中间图片颜色值修改