一、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模块及其用法的更多相关文章

  1. json模块和pickle模块的用法

    在python中,可以使用pickle和json两个模块对数据进行序列化操作 其中: json可以用于字符串或者字典等与python数据类型之间的序列化与反序列化操作 pickle可以用于python ...

  2. python之模块py_compile用法(将py文件转换为pyc文件)

    # -*- coding: cp936 -*- #python 27 #xiaodeng #python之模块py_compile用法(将py文件转换为pyc文件):二进制文件,是由py文件经过编译后 ...

  3. 百万年薪python之路 -- socket()模块的用法

    socket()模块的用法: import socket socket.socket(socket_family,socket_type,protocal=0) socket_family 可以是 A ...

  4. Python的logging模块基本用法

    Python 的 logging 模块的简单用法 在服务器部署时,往往都是在后台运行.当程序发生特定的错误时,我希望能够在日志中查询.因此这里熟悉以下 logging 模块的用法. logging 模 ...

  5. python学习第四十九天XML模块的用法

    xml是实现不通语言或程序之间进行数据交换的协议,跟json差不多,但是json用起来简单,还没诞生json,以前都是用xml,下面讲述XML模块的用法. 1,导入xml模块 import xml 2 ...

  6. python pickle模块的用法

    pickle用于python特有的类型,和python的数据类型间进行转换,提供四个功能 dumps,dump,loads,load. pickle 的用法 #pickle.dumps 将数据通过特殊 ...

  7. 博客管理与文章发布系统-第三方模块及其用法Part1

    写个帖子记录一下自己写的第一个express完整项目. 所需第三方模块及其用法. 一.先把所需文件和准备工作写一下 写项目前的准备 1.创建所需文件夹 public 静态资源 model 数据库操作 ...

  8. argparse模块基本用法

    argparse模块基本用法 在 python 编写的程序中,我们经常会看到的 argparse 相关代码,而它究竟怎么使用呢?接招! argparse 是一个命令行参数解析模块 现在提出需求,我需要 ...

  9. python中ConfigParse模块的用法

    ConfigParser 是Python自带的模块, 用来读写配置文件, 用法及其简单. 配置文件的格式是: [...]包含的叫section section 下有option=value这样的键值 ...

  10. python OptParse模块的用法详解

    OptParse模块的简单介绍 Python 有两个内建的模块用于处理命令行参数: 一个是 getopt只能简单处理 命令行参数: 另一个是 optparse,它功能强大,而且易于使用,可以方便地生成 ...

随机推荐

  1. Docker快速安装

    目前装Docker得最简单方式就是脚本安装了,方法如下: curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh 安装后 ...

  2. Raspberry Pi 3B I2C 问题

    刚刚接触树莓派,的确很适合用来学习,资料多而且很规范,开发者多,平台统一,很多问题别人都已经解决.

  3. PS命令和kill命令

    名称:ps使用权限:所有使用者使用方式:ps [options] [--help]说明:显示瞬间行程 (process) 的动态参数:ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义-A   ...

  4. Android模拟器Genymotion安装使用教程详解

    一.注册\登录 打开Genymotion官网,https://www.genymotion.com/ ,首先点击右上角的Sign in进行登录操作.如何登录就不细讲了,下面讲一下如何注册(备注:注册按 ...

  5. 原生js 实现better-scroll效果,饿了么菜单内容联动,即粘即用

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  6. mysql查看索引的大小

    1 ,show table status from your_database_name  这个不准: 2,这个比较详细 select database_name, table_name, index ...

  7. 记一次EFCore类型转换错误及解决方案

    一  背景 今天在使用EntityFrameworkCore 查询的时候在调试的时候总是提示如下错误:Unable to cast object of type 'System.Data.SqlTyp ...

  8. Eclipse控制台不限日志行数

    在使用Eclipse时,如果控制台输出的内容比较多,控制台之前的内容就会消失,导致前面的控制台打印信息无法查看. 设置Eclipse的控制台属性 设置方法: 打开Eclipse的菜单栏:Window ...

  9. Linux02 cd命令以及绝对路径和相对路径

    一.cd 这是一个非常基本,也是大家常用的命令,用于切换当前目录,他的参数就是要切换的目录的路径,可以是绝对路径,也可以是相对路径. cd /home/keshengtao/ 绝对路径 cd ./pa ...

  10. 下载安装Git,学习笔记

    官方地址为:https://git-scm.com/download/win 2.下载完之后,双击安装,全部选择默认. 3.选择安装目录 4.选择组件 5.开始菜单目录名设置  6.选择使用命令行环境 ...