Python 基础之re 模块
Python 基础之大话 re
在使用re模块中主要会用到一下几个方法:
re.match()
#从头匹配一个字符串
re.search()
#浏览全部字符串,匹配第一个符合规则的字符串
re.findall()
#将匹配到的所有内容都放在一个列表中
#re.finditer()
re.split()
re.sub()
好,先简单的介绍一下re 模块中的基础知识:
1.元字符 . ^ $ * + ? {} [] | () \ ,
2.\的功能:
#1.反斜杠后面跟元字符去除特殊功能
#2.反斜杠后面跟普通字符实现特殊功能
#3.引用序号对应的字组所匹配的字符串
有了上面的基本概念就可以写几个例子来说明一下问题了:
a='abcd'.find('b')
b='abcd'.split('b')
c='abcd'.replace('ab','er')
d=re.findall('alex.w','aaaalexcw')#.为通配符,一个点只能表示一个字符.表示除去换行符以外任意一个字符
e=re.findall('^alex','alexaaalexcw')#^尖角符是用来控制开头的,而$是用来控制结尾的
f =re.findall('alex*','aaaalecw')#*为控制*符号前面的字符重复0~多次
g =re.findall('alex+','aaaalexxxxcw')#+为控制+符号前面的字符重复1~多次
h=re.findall('alex?','aaaalexcw')#?为控制?符号前面的字符重复0~1次
i = re.findall('alex{3,5}','aaaalexxxxxxxcw')#{}为控制{}符号前面的字符重复括号输入的次
g = re.findall('a[bc]d','aaaacdsssssacdvvdabcdf')
#[]表示的是字符集的意思字符集中的元素的关系是“或”的意思
#在字符集中[1-9]表示取1到9这几个数字都是可以的,[a-z]表示取a到z这些字母都是OK的
#[^xx]尖角^在字符集中的含义是取字符集中元素的“非”
接下来对上面的常用方法进行举例:
match方法中的有分组与无分组
#1.无分组
prigin = 'hello alex bcd alxe leg alex acd age19'
r = re.match('h\w+',prigin)
print(r.group()) #获取匹配到的所有结果
print(r.groups()) #获取模型中匹配到的分组结果
print(r.groupdict()) #获取模型中匹配到的分组结果 #2.有分组
#目的是提取匹配成功的指定内容(先匹配成功全部正则,再匹配成功的局部内容提取出来)
prigin = 'hello alex bcd alxe leg alex acd age19'
r = re.match('(h)\w+',prigin)
print(r.group()) #获取匹配到的所有结果,加括号后有无分组没有任何影响
print(r.groups()) #获取模型中匹配到的分组结果,加括号后会把加括号的内容提取出来
print(r.groupdict()) #获取模型中匹配到的分组结果
#在grouopdict()中需要一个键与值与之对应才可使用,在写法上如下例子所示
prigin = 'hello alex bcd alxe leg alex acd age19'
r = re.match('(?P<n1>h)(?P<n2>\w+)',prigin)
print(r.group()) #获取匹配到的所有结果,加括号后有无分组没有任何影响
print(r.groups()) #获取模型中匹配到的分组结果,加括号后会把加括号的内容提取出来
print(r.groupdict()) #获取模型中匹配到的分组结果 #search方法中的有分组与无分组
#1.无分组 prigin = 'hello alex bcd alxe leg alex acd age19'
r = re.search('a\w+',prigin)
print(r.group()) #获取匹配到的所有结果
print(r.groups()) #获取模型中匹配到的分组结果
print(r.groupdict()) #获取模型中匹配到的分组结果 #2.有分组
prigin = 'hello alex bcd alxe leg alex acd age19'
r = re.search('a(\w+).*(?P<name>\d)$',prigin)
print(r.group()) #获取匹配到的所有结果
print(r.groups()) #获取模型中匹配到的分组结果
print(r.groupdict()) #获取模型中匹配到的分组结果 ''' '''
#findall基本方法,做的都是groups()的东西
#1.寻找时是按照一个字符,一个字符的寻找,当找到符合要求的之后(相当于把符合要求的拿走),再从下一个字符开始寻找
r1 = re.findall('\d+\w\d+','a2b3c4d5')
print(r1) #2.空的内容也可以匹配
r2 = re.findall('','a2b3c4d5')
print(r2) #findall方法中的有分组与无分组 prigin = 'hello alex bcd alxe leg alex acd age 19'
r1 = re.findall('a\w+',prigin)
print(r1)
r2 = re.findall('(a\w+)',prigin)
print(r2)
r3 = re.findall('a(\w+)',prigin)
print(r3)
r4 = re.findall('(a)(\w+)',prigin)
print(r4)
r5 = re.findall('(a)(\w+(e))(x)',prigin)#从左到右,从外到内
print(r5)
#finditer 迭代过程可以加入的内容
prigin = 'hello alex bcd alxe leg alex acd age 19'
r6 = re.finditer('(a)(\w+(e))(?P<n1>x)',prigin)#从左到右,从外到内
print(r6)
for i in r6:
print(i,i.group(),i.groups(),i.groupdict()) a = 'alex'
n = re.findall('(\w)(\w)(\w)(\w)',a)
print(n)
n = re.findall('(\w){4}',a)
print(n)
n = re.findall('(\w)*',a)#*代表有0~很多个,则当为0个时就会出现控格来补充
print(n)
n = re.findall('',a)
print(n) '''
'''
#re.split方法的讲解(分割的目的)
origin = 'hello alex bcd alxe leg alex acd age 19'
origin.split('a')
print(origin.split('a'))#在字符串中分隔符的用法
#无分组
n = re.split('a\w+',origin,1)#第三个参数的意思是从头开始只分割一次,且此方法不保留分割的字符
#有分组
n1 = re.split('(a\w+)',origin)#在分割的字符上加上括号表示的是不仅需要按此字符分割而且还需要保留此字符
n2 = re.split('a(\w+)',origin)
print(n1 , n2)
''' '''
#re.sub 是用来做替换用的 origin = '1jhjhjhj2hjhjhjk4hjhjhjkh5jkhjhjk6hkjk'
n1 = re.sub('\d+','DDD',origin,1)
n2 = re.sub('\d+','DDD',origin)
n3,count = re.subn('\d+','DDD',origin)
print(n1)
print(n2)
print(n3,count)
Python 基础之re 模块的更多相关文章
- 十八. Python基础(18)常用模块
十八. Python基础(18)常用模块 1 ● 常用模块及其用途 collections模块: 一些扩展的数据类型→Counter, deque, defaultdict, namedtuple, ...
- Python基础-包与模块
Python基础-包与模块 写在前面 如非特别说明,下文均基于Python3 摘要 为重用以及更好的维护代码,Python使用了模块与包:一个Python文件就是一个模块,包是组织模块的特殊目录(包含 ...
- python基础,函数,面向对象,模块练习
---恢复内容开始--- python基础,函数,面向对象,模块练习 1,简述python中基本数据类型中表示False的数据有哪些? # [] {} () None 0 2,位和字节的关系? # ...
- python基础31[常用模块介绍]
python基础31[常用模块介绍] python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的. 常用的li ...
- python基础-包和模块
Python基础-包与模块 写在前面 如非特别说明,下文均基于Python3 摘要 为重用以及更好的维护代码,Python使用了模块与包:一个Python文件就是一个模块,包是组织模块的特殊目录(包含 ...
- Python全栈开发之路 【第六篇】:Python基础之常用模块
本节内容 模块分类: 好处: 标准库: help("modules") 查看所有python自带模块列表 第三方开源模块: 自定义模块: 模块调用: import module f ...
- Python基础入门-os模块
今天我们来介绍一下os模块中常用的一些方法,当然python中的os模块中提供的使用方法有很多,但是这里面小编会列举出来一些和实际工作中应用的相关的方法,而且会有一些实际的例子方便大家对os模块理解. ...
- python基础,导入模块,if语句,while语句
python基础 python代码 变为字节码 变为机器码 最后执行执行‘文件名.py’文件时出现的‘文件名.pyc’文件为字节码 缓存机制 使用pycharm的时候在文件最开始添加下面这两行代码,中 ...
- python基础之os模块操作
# os模块 目录相关内置库import os# . 当前目录 .. 返回上一级目录# 1. os.path.abspath() --获取当前文件的绝对路径(不包含os模块.py) pwd# path ...
随机推荐
- 树莓派3B/3B+ 清华镜像系统和安装中文输入法Fcitx及Google拼音输入法
你还在为树莓派无法安装中文输入法而到处找教程吗? 你还在为树莓派每次下载都要远隔重洋获取资源,龟速下载而烦恼吗? 为了解决这个问题,在这篇树莓派教程中,我将手把手叫你怎样安装 清华镜像系统和中文输入法 ...
- nishang的介绍与使用
0x01前言 Nishang是一个PowerShell攻击框架,它是PowerShell攻击脚本和有效载荷的一个集合.Nishang被广泛应用于渗透测试的各个阶段,本文主要介绍如何使用Nishang的 ...
- 转 NAT技术详解
NAT产生背景 今天,无数快乐的互联网用户在尽情享受Internet带来的乐趣.他们浏览新闻,搜索资料,下载软件,广交新朋,分享信息,甚至于足不出户获取一切日用所需.企业利用互联网发布信息,传递资料和 ...
- [NOIp2014] luogu P1351 联合权值
哎我博 4 了. 题目描述 无向连通图 GGG 有 nnn 个点,n−1n−1n−1 条边.点从 111 到 nnn 依次编号,编号为 iii 的点的权值为 WiW_iWi,每条边的长度均为 111 ...
- 详细解读 Spring AOP 面向切面编程(一)
又是一个周末, 今天我要和大家分享的是 AOP(Aspect-Oriented Programming)这个东西,名字与 OOP 仅差一个字母,其实它是对 OOP 编程方式的一种补充,并非是取而代之. ...
- stm32cubeMX配置LWIP
MCU:stm32f769NIHx PHY:LAN8742A LWIP_VERSION:2.0.3 1.配置RCC,串口(printf debug log) (1)开启RCC,配置时钟系统 图1.1 ...
- 远程控制服务(SSH)之Linux环境下客户端与服务端的远程连接
本篇blog将讲述sshd服务提供的两种安全验证的方法,并且通过这两种方法进行两台Linux虚拟机之间的远程登陆. 准备工作: (1) 准备两台安装有Linux系统的虚拟机,虚拟机软件采用VM ...
- 06 python学习笔记-常用模块(六)
一. 模块.包 1.什么是模块? Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句,是用来组织代码的.模块能定义函数 ...
- 拒绝黑盒应用-Spring Boot 应用可视化监控
图文简介 逻辑关系 效果演示 快速开始 1.Spring Boot 应用暴露监控指标[版本 1.5.7.RELEASE] 首先,添加依赖如下依赖: <dependency> <gro ...
- 冷知识: 不会出现OutOfMemoryError的内存区域
程序计数器(PC) 因为程序计数器只是记录当前线程正在执行的那条字节码指令的地址,即使出现死循环都不会内存溢出