RE模块

  import  re 的常用操作

    查找

1. findall :

 ret = re.findall('\d+'.'sjkhk172按实际花费928')   #正则表达式,待匹配的字符串,flag

   # ['172', '928']

 ret = re.findall('\d'.'sjkhk172按实际花费928')   #正则表达式,待匹配的字符串,flag
  
#['1', '7', '2', '9', '2', '8']
2. search:
ret = re.search('\d+','sjkhk172按实际花费928')

print(ret)
#<_sre.SRE_Match object; span=(5, 8), match='172'>
#内存地址,这是一个正则匹配的结果 print(ret.group())
#

3. match :

ret = re.match('\d+','sjkhk172按实际花费928')
print(re.group())
#

   这是字符串处理的拓展:替换.切割

  split (正则表达式,切个对象)

     返回列表,按照正则规则切割,默认匹配到的内容会被切掉

s = 'eagle22wolf55fox99'
ret = re.split('\d+',s) #正则表达式,切个对象
print(ret) #['eagle','wolf','fox'] s = 'eagle22wolf55fox99'
ret = re.split('(\d+)',s) #正则表达式加小括号也打印切割部分
print(ret) #['eagle','22','wolf','55','fox',''99]

sub (旧的,新的,替换对象,替换次数(默认为所有))

      替换 按照正则规则去寻找要被替换掉的内容

s = 'eagle22wolf55fox99'
ret = re.sub('\d+','H',s)
print(ret) #eagleHwolfHfoxH s = 'eagle22wolf55fox99'
ret = re.sub('\d+','H',s,1) #次数为1
print(ret) #eagleHwolf55fox99

   subn 返回一个元组,第二个元素是替换的次数

ret = re.subn('\d+','H','eagle22wolf55fox99')
print(ret) #('eagleHwolfHfoxH',3)

 4.re模块的进阶 : 时间\空间

  complie 节省你使用正则表达式解决问题的时间 

    编译一个正则表达式,用这个结果去search  match  findall  finditer能够接受时间

    把正则表达式 编译成 字节码

    在多次的使用过程中,不会多次编译

ret = re.compile('\d+')      #已经完成编译了
print(ret)
#re.complie('\\d+') res=ret.finall('eagle22fox88wolf11')
print(res)
# ['22','88'.'11'] rex = ret.search('sjkjk250只要九九八998')
print(rex.group())
#

  finditer 节省你使用正则表达式解决问题的空间\内存

     返回一个迭代器,所有的结果都在这个迭代器中,需要通过循环                          +group的形式取值,能够节省内存

ret = re.finditer('\d+','eagle22wolf33fox99')
for i in ret:
print(i.group())
# 22 33 99

分组在re模块中的使用

关于分组:

    对于正则表达式来说有些时候我们需要进行分组,来整体约束某一组字符出现的次数

(\.[\w]+)?

     对于python语言来说分组可以帮助你更好更精准地找到你征正需要的内容

<(\w+)>(\w+)</(\w+)>
import re
s = '<a>wahaha</a>' #标签语言HTML网页
ret = re.search('<\w+>(\w+)</(\w+)>',s)
print(ret.group(0)) #所有的结果 <a>whahaha</a>

print(ret.group(1)) #从左到右第一个小括号中的内容数字参数代表的时去对应分组中的内容#a
print(ret.group(2)) #wahaha  
print(ret.group(3)) #a
#为了findall 也可以顺利取到分组中的内容,有一个特殊的语法,就是优先显示分组中内容
import re s = '<a>wahaha</a>'
ret = re.findall('(\w+)',s)
print(ret)
#['a','wahaha','a'] ret = re.findall('>(\w+)<',s)
print(ret)
#['wahaha']
#取消分组优先(?:正则表达式)
ret = re.findall('(\d+)(\.\d+)?','1.341*3')
print(ret)
#[('1','.341'),('3','')]
#将小数和整数都优先,则会返回一个元组组成的列表
ret = re.findall('\d+(\.\d+)?','1.341*3')
print(ret)
#['.131','']
#默认会先取后面分组的

ret = re.findall('\d+(?:\.\d+)?','1.341*3')
print(ret)
#['1.131','3']
#取消分组优先

python和正则表达式之间的特殊的约定

#分组命名(?P<这个组的名字>)正则表达式
s='<a>wahaha</a>'
ret = re.search('>(?P<con>\w+)<',s)
print(ret.group(1)) #wahaha
print(ret.group('con')) #wahaha #使用前面的分组要求使用这个名字的分组和前面同名分组中的内容匹配的必须一致 方法一:
s='<a>wahaha</a>'
func = '<(\w+)>(\w+)<(\w+)>'
ret = re.search(func,s)
print(ret.group(1)==ret.group(3))
#无ret,正则没有抓到东西 方法二:
func = '<(?P<tab>\w+)>(\w+)</(?P=tab)>'
ret = re.search(func,s)
print(ret.group)
#<a>wahaha</a>

  

												

re 模块的重新整理的更多相关文章

  1. Javascript 的模块化编程及加载模块【转载+整理】

    http://www.ruanyifeng.com/blog/2012/10/javascript_module.html 本文内容 引入 模块化 最初写法 对象写法 立即执行函数写法 放大模式 宽放 ...

  2. Ti CC2540蓝牙模块学习笔记整理

    接触CC2540几天,终于有了初步的理解,现将笔记整理如下,只是皮毛,如有错误,还请指正,还有好多没闹明白的地方,以后应该还会继续向里面更新~ 一.整体 1.TI的蓝牙平台支持2种协议栈/应用配置:单 ...

  3. Python 常用模块大全(整理)

    https://www.cnblogs.com/jpfss/p/9686050.html

  4. python常用小模块使用汇总

    在写代码过程中常用到一些好用的小模块,现整理汇总一下: 1.获取当前的文件名和目录名,并添到系统环境变量中. file = os.path.abspath(__file__)             ...

  5. python 入门快速学习整理

    Python 入门学习 1  : 对象类型 1 1.1 列表 1 1.2 字典 2 1.3 元组 2 1.4 元组 2 1.4 文件 3 2  : 条件和循环语句 3 2.1  if else语句 3 ...

  6. Angular问题04 模块导入错误???、BrowserModule模块重复加载???、material模块引入后报错

    1 模块导入错误 1.1 问题描述 项目启动时报错:元数据错误,错误截图如下: 1.2 问题原因 利用VsCode开发angular项目时利用自动导入出现错误 坑01:VsCode 的自动导入功能比较 ...

  7. 传播正能量——做一个快乐的程序员

    引子 今天在博客园看到施瓦小辛格的文章我们搞开发的为什么会感觉到累,顿时有感而发.自己本来不擅长写文章,更不擅长写这种非技术性的文章,但是在思绪喷薄之际,还是止不住有很多话要说.针对从客观上说&quo ...

  8. 【QT】C++ GUI Qt4 学习笔记5

    折腾了好几天,终于把这本书的第三章和第四章给看了个大概. 里面的函数调用关系可谓是复杂. 整理了一部分的函数关系如下: cell关系清理 data(role) 返回应该显示的值 或者对齐方式 或者公式 ...

  9. Linux内核源码分析方法

    一.内核源码之我见 Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次.如果想透析Linux,深入操作系统的本质,阅读内核源码是最有效的途径.我们都 ...

随机推荐

  1. STL版 括号匹配(感觉不如之前自己用数组模拟的跑的快)

    数据结构实验之栈四:括号匹配 Time Limit: 1000MS Memory limit: 65536K 题目描述  给你一串字符,不超过50个字符,可能包括括号.数字.字母.标点符号.空格,你的 ...

  2. 树莓派保持网络连接shell脚本

    源:http://www.jianshu.com/p/96aa26d165c3 (我的简书文章) 故事背景 树莓派3b现在有了板载无线网卡,可以很方便的连接到wifi.但是无线路由器不能保证永远正常工 ...

  3. Linux vSphere SDK for Perl 执行脚本报错

      本人在gentoo系统上安装完vSphere for Perl之后,执行/usr/lib/vmware-viperl/app/vm/vminfo.pl脚本. 提示错误如下: Server vers ...

  4. C++之输入输出流和文件传输流

    1.流的控制 iomanip          在使用格式化I/O时应包含此头文件.    stdiostream   用于混合使用C和C + +的I/O机制时,例如想将C程序转变为C++程序 2.类 ...

  5. JAVA 内部类 (三)实例

    为什么要用内部类:控制框架 一个“应用程序框架”是指一个或一系列类,它们专门设计用来解决特定类型的问题.为应用应用程序框架,我们可从一个或多个类继承,并覆盖其中的部分方法.我们在覆盖方法中编写的代码用 ...

  6. 2019腾讯广告算法大赛 Rank23

    由于官方审核代码,代码将在2019年6月28号后开源 写在前面 这次腾讯的第三届广告算法大赛,是我第一次参加,取得了初赛与复赛均为23名的成绩,毕竟我只是初打比赛不久的小白.我想在此分享下我的基本解题 ...

  7. 解除win10禁ping方法

    在局域网中,有一台电脑安装了win10操作系统,win10电脑连接网络没有问题,就是在其他电脑ping这台windows10电脑时就是ping不通,显示“请求超时.”.虽然这台windows10电脑联 ...

  8. java调用POI读取Excel

    HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls:XSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx: 1.注意点 getPhy ...

  9. UVA - 11624 Fire! 双向BFS追击问题

    Fire! Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the owner of ...

  10. 不能支持C++11的特性~,升级到4.8.2

    一.简易安装 操作环境 CentOS6.5 64bit,原版本4.4.7,不能支持C++11的特性~,希望升级到4.8.2 不能通过yum的方法升级,需要自己手动下载安装包并编译 1.1 获取安装包并 ...