十四、正则表达式

文章目录

  • 学习目标
  • 一、正则表达式的介绍
  • 二、正则查找相关的方法
  • 三、re.Match类
  • 四、re.compile 方法的使用
  • 五、正则修饰符
  • 六、正则表达式
    • 6.1 正则表达式规则
    • 6.2 标点符号的特殊含义
    • 6.3 字母的特殊含义
  • 七、正则替换
  • 八、贪婪模式和非贪婪模式

学习目标

  • 能够描述什么是正则表达式
  • 能够使用re模块查找指定正则格式的字符串
  • 能够说出match,search,findall和finditer方法的区别
  • 能够说出re.Match类的常见属性和方法作用
  • 能够说出常见的正则修饰符
  • 能够说出常见的正则表达模式
    • 单字修饰符
    • 限定修饰符
    • 边界修饰符
  • 能够说出贪婪模式和非贪婪模式的区别
  • 能使用非贪婪模式进行正则匹配

一、正则表达式的介绍

  • 正则表达式是一个特殊的字符序列,计算机科学的一个概念。通常被用来检索、替换哪些符合某个模式(规则)的文本
  • 许多程序设计语言都支持利用正则表达式进行字符串操作。在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用 re模块。re模块使用 Python 语言拥有全部的正则表达式功能
  • 特点:
  1. 灵活性、逻辑性和功能性非常强
  2. 可以迅速地用极简单的方式达到字符串的复杂控制
  3. 对于刚接触的人来说,比较晦涩难懂
# 用来处理字符串,对字符串进行检索和替换的
# 1. 查找    2. 替换
import rex = 'hello\\nworld' # hello\nworld
# 在正则表达式里,如果想要匹配一个 \ 需要使用 \\\\# 第一个参数就是正则匹配规则
# 第二个参数表示需要匹配的字符串# m = re.search('\\\\', x) # match 和 search# 还可以在字符串前加入一个 r,\\ 就表示 \
m = re.search(r'\\', x)# search 和 match 方法的执行结果是一个Match类型的对象
print(m) # <re.Match object;span=(5, 6), match='\\'>

二、正则查找相关的方法

# 查找相关的方法
# match 和 search:
# 共同点:1. 只对字符串查询一次  2. 返回值类型都是 re.Match 类型的对象(没有匹配上则返回None)
# 不同点:match 是从头开始匹配,一旦匹配失败,就会方法返回 None;search是在整个字符串里匹配
查找字符串,返回结果是一个 re.Match 对象# finditer:查找到所有的匹配数据放到一个可迭代对象里(各数据是 re.Match 对象)# findall:把查找到的所有的字符串放到一个列表里# fullmatch:完整匹配,字符串需要完全满足正则规则才会有结果,否则就是Nonefrom connections.adc import Iterable
import re
m1 = re.match(r'good','hello world good morning')
print(m1) # Nonem2 = re.search(r'hello','hello world good morning')
print(m2) # <re.Match object;span=(0, 5), match='hello'># finditer 返回的结果是一个可迭代对象
# 可迭代对象里的数据是匹配到的所有结果,是一个 re.Match 类型的对象
m3 = re.finditer(r'x','fhquhfnxpkmapixok1i')
print(isinstance(m3, Iterable)) # Truefor t in m3:print(t)    m4 = re.findall(r'x\d+','xqofho1cxhjax123x14')
print(m4) # 以x开头且带数字元素组成的列表m5 = re.fullmatch(r'hello world', 'hello world')

三、re.Match类

当我们调用 re.match 方法、re.search 方法、或者对 re.finditer 方法的结果进行迭代时,拿到的数据类型都是 re.Match 对象

import rem = re.search(r'm,'sdafhiwmkom')# 匹配到的结果字符串的开始和结束下标
print(m.span()) # 使用group方法可以获取匹配的字符串结果
# group 可以传参,表示第 n 个分组
print(m.group()) # m
print(m.group(0)) # m
print(m.group(1)) # IndexError:no such group# group方法表示正则表达式的分组
# 1. 在正则表达式里使用()表示一个分组
# 2. 如果没有分组,默认只有一组

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/873863.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫(基本流程)

1. 确定目标和范围 明确需求&#xff1a;确定你需要从哪些网站抓取哪些数据。合法性&#xff1a;检查目标网站的robots.txt文件&#xff0c;了解哪些内容可以被抓取。数据范围&#xff1a;确定爬取数据的起始和结束点&#xff0c;比如时间范围、页面数量等。 2. 选择合适的工…

科研绘图系列:R语言微生物堆积图(stacked barplot)

介绍 堆叠条形图是一种数据可视化图表,它通过将每个条形分割成多个部分来展示不同类别的数值。每个条形代表一个总体数据,而条形内的每个部分则代表该总体数据中不同子类别的数值。这种图表特别适合展示整体与部分的关系,以及各部分在整体中的比例。 特点: 多部分条形:每…

框架设计MVP

重点&#xff1a; 1.presenter里面包含view和model 2.和MVC不同的是View和Model之间不进行交互 3.view包含presenter,view通过presenter反向处理逻辑。 链接&#xff1a; MVP简单实现_安卓mvp presenter-CSDN博客 Model.h #pragma once //Model数据处理器 class Model { …

动漫风格动漫404网站维护HTML源码

源码介绍 动漫风格动漫404网站维护HTML源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 效果预览 源码下载 动漫风格动漫404网站维护HTML源码

GSAP动画魔法:解锁网页设计的无限创意与动感

GSAP&#xff08;GreenSock Animation Platform&#xff09;是一个强大的JavaScript动画库&#xff0c;用于在Web应用程序中创建高性能和复杂的动画效果&#xff0c;其提供了一套丰富的API和工具&#xff0c;使开发者能够轻松地创建流畅、交互式的动画&#xff0c;涵盖了从简单…

Shader入门精要总结(一)渲染流水线

渲染流水线的最终目的在于生成或者说是渲染一张二维纹理&#xff0c;即我们在电脑屏幕上看到的所有效果。 流水线主要分成三个阶段&#xff1a;应用阶段&#xff0c;几何阶段&#xff0c;光栅化阶段。&#xff08;概念&#xff09; 一.概述 1. 应用阶段 这个阶段由应用主导&am…

Debian Linux下rclone挂载谷歌云盘碰到的坑

可能是明月好久没有使用境外服务器挂载境外的云盘缘故吧,今天一个代维客户需要他的Linux服务器挂载谷歌云盘好进行云备份,本来是个很简单的事儿,没想到在rclone连接谷歌云盘的时候卡壳了,可是把明月给难为坏了,搜索到的简体中文教程倒是很多,但没有一个提到这个“坑”,最…

【C++】位运算与相关算法问题

1.基础的位运算 在位运算中&#xff0c;比较重要的就是1.按位与&#xff08;&&#xff09;&#xff0c;2.按位或&#xff08;|&#xff09;&#xff0c;3.按位异或&#xff08;^&#xff09;。 &&#xff1a;有0则为0。 |&#xff1a;有1则为1。 ^&#xff1a;&…

秋招突击——7/20——科大讯飞笔试相关——提前{图像叠加、世界杯积分问题、直角三角形个数}——正式{持续输出中位数,二次幂和三次幂的序列表示}

文章目录 引言提前图像叠加世界杯积分问题个人实现参考实现 直角三角形个数个人实现 正式等待时间期望值中位数输出个人实现 二次幂和三次幂序列个人实现 总结 引言 昨天用了牛客网做了一下作业帮的笔试&#xff0c;做的一塌糊涂&#xff0c;但是提醒我要练习使用牛客网的环境…

HJ99 自守数

HJ99 自守数 描述 自守数是指一个数的平方的尾数等于该数自身的自然数。例如&#xff1a;25^2 625&#xff0c;76^2 5776&#xff0c;9376^2 87909376。请求出n(包括n)以内的自守数的个数 数据范围&#xff1a; 1≤&#x1d45b;≤10000 1≤n≤10000 输入描述&#xff1a; i…

基于Matlab的数据可视化

基于Matlab的数据可视化 一、二维图形的绘制&#xff08;一&#xff09;基本图形函数&#xff08;1&#xff09;plot函数&#xff08;2&#xff09;fplot函数&#xff08;3&#xff09;其他坐标系的二维曲线 &#xff08;二&#xff09;图形属性设置&#xff08;1&#xff09;线…

c++应用网络编程之四Linux常用的网络IO模型

一、网络IO模型的实际应用 在前面学习了基本的网络IO模型&#xff0c;那么这种抽象的网络IO模型如何在实际的编程中应用呢&#xff1f;这其实就是理论与实际如何产生联系的一个过程。在现实世界中&#xff0c;有了理论的指导&#xff0c;下一步就是要把相关的理论如何与具体的…

Linux网络:应用层协议HTTP(一)

一、什么是HTTP协议 虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输协议)就是其中之一。 在互联网世界中&#xff0c;HTTP&#xff08;HyperText Transfer Protocol&…

C#中的栈和队列

什么是栈 栈和队列是非常重要的两种数据结构,在软件设计中应用很多。栈和队列也是线性结构,线性表、栈和队列这三种数据结构的数据元素以及数据元素间的逻辑关系完全相同,差别是线性表的操作不受限制,而栈和队列的操作受到眼制。栈的操作只能在表的一端进行,队列的插入操作在表…

安卓篇-unidbg初步测试

前言:目前app的进度是c层的md5魔改 已经做好,又套了一层java层的加密。刚好可以再熟悉一下unidbg 最新版的app ,作为demo测试一下。 分析先看下app 的反编译的结果,很明显,源码很清晰 ,之前的混淆方式一点用没有。 然后跳过去 /* loaded from: classes4.dex */ public c…

HALCON数据结构

一、HALCON数据结构简介 1、HALCON中有两类参数&#xff1a;图形参数和控制参数。 2、HALCON算子参数中&#xff0c;图形输入参数、图形输出参数、控制输入参数和控制输出参数。 3、图形参数有&#xff1a;图像(image)、区域(region)和轮廓(XLD) 4、控制参数有&#xff1a;…

FPGA实验5:4位加法计数器

实验目的及要求 掌握时钟信号、进程和BUFFER端口的运用&#xff1b;了解计数器的设计、仿真和硬件测试&#xff0c;进一步熟悉VHDL语句、语法及应用等。 实验原理 运用Quartus II 集成环境下的VHDL文本设计方法设计4位加法计数器&#xff0c;进行波形仿真和分析、引脚分配…

人工智能与机器学习原理精解【2】

文章目录 机器学习基础一般化流程回归线性回归julia实现最小二乘法原理最小二乘法的原理线性回归中的最小二乘法最小二乘法的优点与局限性最小二乘法算法过程一、线性回归模型二、目标函数三、求解算法四、算法步骤四、计算公式五、注意事项 回归理论概述回归的基本概念回归模型…

4 Java的基本程序设计结构(基本语法3)- 字符串、面向对象(进阶)

文章目录 前言一、java中的 究竟比较的是什么&#xff1f;二、字符串1 String&#xff08;1&#xff09;String的两种构造方式&#xff08;2&#xff09;字符数组转字符串、字节数组转字符串&#xff08;3&#xff09;字符串的 拼接&#xff08;4&#xff09;字符串的内存结构…

2024睿抗机器人开发者大赛CAIP编程赛题解(c++)

题目地址(补题) PTA | 程序设计类实验辅助教学平台 RC-u1 热҈热҈热҈ 简单模拟题&#xff0c;没什么好说的 : #include<bits/stdc.h> using namespace std ; const int N 55 ;int a[N] ;int main(){int n , w ; cin >> n >> w ;for(int i1;i<n;i)…