re模块及其用法
一、re模块下的常用方法
首先在使用re模块之前,需要引入re模块
import re
1.与查找相关的:
1.findall 返回列表,找到所有的匹配项
ret = re.findall("\d+","asda132eqwe啊阿达456")
print(ret)
# ['132', '456']
2.search 匹配从左到右第一个符合,返回一个变量,通过group方法取到值,没有匹配到就会返回None,使用group会报错。
ret = re.search("\d+","asda132eqwe啊阿达456")
print(ret.group())
#
ret = re.search("\d+","asdaeqwe啊阿达")
print(ret.group())
#AttributeError: 'NoneType' object has no attribute 'group'
3.match 相当于在search的正则表达式中加了一个“^”
2.与字符串处理相关的;
1.spilt 返回列表,按照正则规则切割,默认匹配到的内容会被切割掉。
ret = re.split("\d+","asd23sadasd90dasdasd809asd89") #(\d+)可以把切割掉的保留下来
print(ret)
# ['asd', 'sadasd', 'dasdasd', 'asd', '']
2.sub、subn 替换,按照正则规则去寻找要被替换的内容,subn返回元组,第二个值是替换的次数。
ret = re.sub("\d+","H","asd23asd34455asd55")
print(ret)
# asdHasdHasdH
ret = re.subn("\d+","H","asd23asd34455asd55")
print(ret)
# ('asdHasdHasdH', 3)
3.re模块的进阶:时间\空间
1.compile 编译一个正则表达式,用这个结果去search match findall finditer 能节省时间,不用每次使用的时候再去编译了。
ret = re.compile("\d+")
res = ret.findall("asd23asd34455asd55")
print(res)
res = ret.search("asd23asd34455asd55")
print(res.group())
2.finditer 返回一个迭代器,所有的结果都在这个迭代器中,需要通过循环+group的形式取值 能够节省内存。
res = re.finditer("\d+","asd23asd34455asd55")
print(res)
for i in res:
print(i.group())
二、分组在re模块中的使用
s = '<a>wahaha</a>'
ret = re.search("(>)(\w+)(<)",s)
print(ret.group()) #不加参数,默认是匹配所有结果
print(ret.group(1)) #数字参数表示的是取对应分组中的内容
print(ret.group(2))
print(ret.group(3))
ret = re.findall(">(\w+)<",s)
print(ret)
#['wahaha']
#为了findall也可以顺利取到分组中的内容,有一个特殊的语法,就是优先显示分组中的内容
ret = re.findall('\d+(?:\.\d+)?','1.234*4')
print(ret)
#['1.234', '4']
#如果按照优先显示,那么结果就不是想要的。所以在括号中加入"?:"就可以取消分组优先,还不会破坏原本的正则表达式。
ret = re.split('(\d+)','alex83taibai40egon25aa')
print(ret)
#['alex', '83', 'taibai', '40', 'egon', '25', 'aa']
#用split切割后消失的部分,可以用()将正则规则括起来,这样就能得到切割掉的部分
s = '<a>wahaha</a>'
ret = re.search(">(?P<com>\w+)<",s)
print(ret.group(1))
print(ret.group("com"))
#wahaha
#wahaha
#可以通过在分组中加入"?P<name>",来对这个分组命名,在group给参数时可以给这个组的名字。
#使用前面的分组,要求使用这个名字的分组和前面同名分组中的内容匹配必须一致
s = '<a>wahaha</a>'
ret = re.search("<(?P<tag>\w+)>(\w+)</(?P=tag)>",s)
print(ret.group())
#<a>wahaha</a>
re模块及其用法的更多相关文章
- json模块和pickle模块的用法
在python中,可以使用pickle和json两个模块对数据进行序列化操作 其中: json可以用于字符串或者字典等与python数据类型之间的序列化与反序列化操作 pickle可以用于python ...
- python之模块py_compile用法(将py文件转换为pyc文件)
# -*- coding: cp936 -*- #python 27 #xiaodeng #python之模块py_compile用法(将py文件转换为pyc文件):二进制文件,是由py文件经过编译后 ...
- 百万年薪python之路 -- socket()模块的用法
socket()模块的用法: import socket socket.socket(socket_family,socket_type,protocal=0) socket_family 可以是 A ...
- Python的logging模块基本用法
Python 的 logging 模块的简单用法 在服务器部署时,往往都是在后台运行.当程序发生特定的错误时,我希望能够在日志中查询.因此这里熟悉以下 logging 模块的用法. logging 模 ...
- python学习第四十九天XML模块的用法
xml是实现不通语言或程序之间进行数据交换的协议,跟json差不多,但是json用起来简单,还没诞生json,以前都是用xml,下面讲述XML模块的用法. 1,导入xml模块 import xml 2 ...
- python pickle模块的用法
pickle用于python特有的类型,和python的数据类型间进行转换,提供四个功能 dumps,dump,loads,load. pickle 的用法 #pickle.dumps 将数据通过特殊 ...
- 博客管理与文章发布系统-第三方模块及其用法Part1
写个帖子记录一下自己写的第一个express完整项目. 所需第三方模块及其用法. 一.先把所需文件和准备工作写一下 写项目前的准备 1.创建所需文件夹 public 静态资源 model 数据库操作 ...
- argparse模块基本用法
argparse模块基本用法 在 python 编写的程序中,我们经常会看到的 argparse 相关代码,而它究竟怎么使用呢?接招! argparse 是一个命令行参数解析模块 现在提出需求,我需要 ...
- python中ConfigParse模块的用法
ConfigParser 是Python自带的模块, 用来读写配置文件, 用法及其简单. 配置文件的格式是: [...]包含的叫section section 下有option=value这样的键值 ...
- python OptParse模块的用法详解
OptParse模块的简单介绍 Python 有两个内建的模块用于处理命令行参数: 一个是 getopt只能简单处理 命令行参数: 另一个是 optparse,它功能强大,而且易于使用,可以方便地生成 ...
随机推荐
- 玩转CONSUL(2)–分布式锁
1. 前言 分布式锁的场景,大家应该都有遇到过.比如对可靠性有较高要求的系统中,我们需要做主备切换.这时我们可以利用分布式锁,来做选主动作,抢到锁作为主,执行对应的任务,剩余的实例作为备份 redis ...
- win7和Ubuntu16.04之间相互远程控制
一.在win7中远程控制ubuntu16.04 步骤: 在ubuntu中通过Desktop share打开允许远程访问 ubuntu中安装xrdp 由于xrdp与unity.gnome桌面不兼容,所以 ...
- 【GStreamer开发】GStreamer基础教程03——动态pipeline
本教程介绍pipeline的一种新的创建方式--在运行中创建,而不是在运行前一次性的创建结束. 介绍 在这篇教程里的pipeline并非在运行前就全部创建结束的.放松一下,这样做没有任何问题.如果我们 ...
- C++标准模板库集合类与映射类总结
一.STL集合类 标准模板库向程序员提供了一些容器类,以便在应用程序中频繁而快速的搜索.std::set和std::multiset用于存储一组经过排序的元素,其查找元素的复杂度为对数,而unorde ...
- [SQL] - Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 问题之解决
场景: 使用 Oracle.DataAccess.dll 访问数据库时,OracleDataAdapter 执行失败. 异常: System.AccessViolationException was ...
- 《Mysql - 如何恢复和避免误删除?》
一:误删数据 (如何恢复和避免误删除) - 使用 delete 语句误删数据行: - 使用 drop table 或者 truncate table 语句误删数据表: - 使用 drop databa ...
- php异常处理面向对象和面向函数使用
要使用异常,首先得知道那些部分会产生异常,产生什么类型异常(php常见异常见下方符表),对产生的异常该怎么办. 如果知道程序的那些部分会产生异常,那么就对这一部分使用try关键字: 如果知道了产生异常 ...
- 利用Python进行数据分析 第7章 数据清洗和准备(1)
学习时间:2019/10/25 周五晚上22点半开始. 学习目标:Page188-Page217,共30页,目标6天学完,每天5页,预期1029学完. 实际反馈:集中学习1.5小时,学习6页:集中学习 ...
- springboot基础、注解等
SpringBoot 1.springboot概念 Spring Boot是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. ...
- PB笔记之窗口之间传递多参数的方法
messageboxex("警告","确定要把删除房间["+ls_id+"]吗?",question!,yesno!)<>1 t ...