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,它功能强大,而且易于使用,可以方便地生成 ...
随机推荐
- Sublime Text3安装及常用插件安装
为了使用强大好用的代码编辑器来进行selenium3+Python3的自动化测试. 使用Sublime Text 3非常适合. 1.下载安装 首先到http://www.sublimetext.com ...
- PHP 木马代码,
<?phpheader("content-Type: text/html; charset=utf-8");if(get_magic_quotes_gpc()) foreac ...
- 【Luogu P3258】[JLOI2014]松鼠的新家
Luogu P3258 题意就是对于一棵树,要求按照给出的顺序对每一个节点进行访问,记录每一个节点被经过的次数:特别地,我们认为只有从一个节点往外走才能被认为是经过一次.(最后一句话非常重要,仔细理解 ...
- Universial robot 运动学
1 正运动学: 1.1 DH方法理解 第i个坐标系固连在第i个连杆的左端.轴i固连于i-1杆,在i-1杆的右端. i坐标系固定在i杆上,随这i杆转动. 每个连杆有四个参数,第i个连杆: ai = ( ...
- Spring Boot制作启动图案
SpringBoot在启动时会有一个默认图案的,如果不喜欢可以自己制作一个. 在resources的目录下新建banner.txt文件. 制作图案地址:springboot启动图案定制 通过输入字符串 ...
- MATLAB 提取图片中的曲线数据重新画图
注意: 本代码是由[MATLAB R2015b win 32位]编写. 先上代码: %% 清空变量 clear all; clc; %% 取点之后趋势是对的,也就是点与点之间的比例是对的,但是每个点的 ...
- python学习-54 正则表达式2
re模块 之分组 >>> import re >>> re.findall("ab|c","sdfab|csdf") ['a ...
- Python2和3字符编码的区别
Python2和3字符编码的区别 一.字符编码应用之Python 1.1 执行Python程序的三个阶段 Python test.py(我再强调一遍,执行test.py的第一步,一定是先将文件内容从硬 ...
- ES6语法基本使用
什么是ES6? ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.Mozilla公司将在这个标准的基础上,推出JavaScript 2. ...
- 模拟费用流 & 可撤销贪心
1. CF730I Olympiad in Programming and Sports 大意: $n$个人, 第$i$个人编程能力$a_i$, 运动能力$b_i$, 要选出$p$个组成编程队, $s ...