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 模块的更多相关文章

  1. 十八. Python基础(18)常用模块

    十八. Python基础(18)常用模块 1 ● 常用模块及其用途 collections模块: 一些扩展的数据类型→Counter, deque, defaultdict, namedtuple, ...

  2. Python基础-包与模块

    Python基础-包与模块 写在前面 如非特别说明,下文均基于Python3 摘要 为重用以及更好的维护代码,Python使用了模块与包:一个Python文件就是一个模块,包是组织模块的特殊目录(包含 ...

  3. python基础,函数,面向对象,模块练习

    ---恢复内容开始--- python基础,函数,面向对象,模块练习 1,简述python中基本数据类型中表示False的数据有哪些? #  [] {} () None 0 2,位和字节的关系? # ...

  4. python基础31[常用模块介绍]

    python基础31[常用模块介绍]   python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的. 常用的li ...

  5. python基础-包和模块

    Python基础-包与模块 写在前面 如非特别说明,下文均基于Python3 摘要 为重用以及更好的维护代码,Python使用了模块与包:一个Python文件就是一个模块,包是组织模块的特殊目录(包含 ...

  6. Python全栈开发之路 【第六篇】:Python基础之常用模块

    本节内容 模块分类: 好处: 标准库: help("modules") 查看所有python自带模块列表 第三方开源模块: 自定义模块: 模块调用: import module f ...

  7. Python基础入门-os模块

    今天我们来介绍一下os模块中常用的一些方法,当然python中的os模块中提供的使用方法有很多,但是这里面小编会列举出来一些和实际工作中应用的相关的方法,而且会有一些实际的例子方便大家对os模块理解. ...

  8. python基础,导入模块,if语句,while语句

    python基础 python代码 变为字节码 变为机器码 最后执行执行‘文件名.py’文件时出现的‘文件名.pyc’文件为字节码 缓存机制 使用pycharm的时候在文件最开始添加下面这两行代码,中 ...

  9. python基础之os模块操作

    # os模块 目录相关内置库import os# . 当前目录 .. 返回上一级目录# 1. os.path.abspath() --获取当前文件的绝对路径(不包含os模块.py) pwd# path ...

随机推荐

  1. 某PHP发卡系统SQL注入

    源码出自:https://www.0766city.com/yuanma/11217.html 安装好是这样的 审计 发现一处疑似注入的文件 地址:/other/submit.php 看到这个有个带入 ...

  2. 物理机安装Kali Linux + Windows10双系统安装教程

    转自 https://www.linuxidc.com/Linux/2018-08/153429.htm 一.镜像下载: 根据需求下载自己需要的版本 从官网下载kali 2018.2 的安装包:htt ...

  3. 机器学习:数据清洗及工具OpenRefine

    数据分析中,首先要进行数据清洗,才可以继续训练模型,预测等操作. 首先介绍一下什么是数据清洗(定义来自 百度百科,有删减) 数据清洗从名字上也看的出就是把“脏”的“洗掉”,指发现并纠正数据文件中可识别 ...

  4. opencv::sift特征提取

    SIFT特征检测介绍 SIFT(Scale-Invariant Feature Transform)特征检测关键特性: -建立尺度空间,寻找极值 -关键点定位(寻找关键点准确位置与删除弱边缘) -关键 ...

  5. 第三方软件 G6ftp提权

    步骤 1.下载配置文件 将administrator 2.利用lcx 端口转发 默认只允许本机连接 3.lcx.exe -tran 8027 127.0.0.1 8021 4.使用客户端以管理员用户登 ...

  6. MyBatis 之源码浅读

    环境简介与入口 记录一下尝试阅读Mybatis源码的过程,这篇笔记是我一边读,一遍记录下来的,虽然内容也不多,对Mybatis整体的架构体系也没有摸的很清楚,起码也能把这个过程整理下来,这也是我比较喜 ...

  7. 10.Linux用户权限

    1.权限基本概述 1. 什么是权限? 我们可以把它理解为操作系统对用户能够执行的功能所设立的限制,主要用于约束用户能对系统所做的操作,以及内容访问的范围,或者说,权限是指某个特定的用户具有特定的系统资 ...

  8. 在Mac OSX上运行Windows应用程序

    在Mac OSX中,借助wine,不需要安装虚拟机也可以运行Window应用程序. wine是一个在Linux和UNIX之上的,WIndows3.x和Windows APIs的实现.是运用API转换技 ...

  9. redis入门(二)

    目录 redis入门(二) 前言 持久化 RDB AOF 持久化文件加载 高可用 哨兵 流程 安装部署 配置技巧 集群 原理 集群搭建 参考文档 redis入门(二) 前言 在redis入门(一)简单 ...

  10. 设计模式(二十)Flyweight模式

    当使用new关键字生成类的实例时,需要给其分配足够的内存空间.当程序中需要大量对象时,如果都是用new关键字来分配内存,将会消耗大量内存空间.Flyweight模式就是尽量避免new出实例,而是通过尽 ...