Python正则表达式所有函数详解

news2024/9/24 19:13:56

文章目录

  • 1 fullmatch
  • 2 match
  • 3 search
  • 4 findall
  • 5 finditer
  • 6 split
  • 7 sub
  • 8 compile

本篇博客主要讲解正则表达式相关的函数,均不涉及复杂的正则表达式语法。如需了解正则表达式语法,请参考下面的文章:
Python正则表达式语法详解

1 fullmatch

Python 中的 re.fullmatch() 函数用于检查输入字符串是否完全匹配给定的正则表达式模式。它接受两个参数:第一个是正则表达式模式,第二个是要与该模式匹配的字符串。如果匹配成功,它会返回一个匹配对象,如果匹配失败,则返回 None。

import re

text = "Hello, world!"
pattern = re.compile("Hello, world!")

match = pattern.fullmatch(text)
if match:
    print(match)
else:
    print("整个字符串与模式不匹配。")

此处完全匹配,所以函数的输出是:
在这里插入图片描述
此处span表示的是匹配上的字符串的开始位置与结束位置,match表示匹配上的内容,后面其他函数的输出含义与此相同。

2 match

Python 中的 re.match() 函数用于判断字符串的起始位置是否与正则表达式匹配,它接受两个参数:第一个是正则表达式模式,第二个是要与该模式匹配的字符串。如果匹配成功,它会返回一个匹配对象,如果匹配失败,则返回 None。

import re

text = "Hello, world!"
pattern = re.compile("Hello")

match = pattern.match(text)
if match:
    print(match)
else:
    print("匹配失败")

在这里插入图片描述

3 search

扫描整个字符串,判断有无匹配的子串,如果匹配成功,将返回第一个匹配的字符串对象。可以看出:上面三种函数的匹配规则,其严格程度是依次下降的。

import re

text = "Hello, world! How are you?"
pattern = "world"

match = re.search(pattern, text)
if match:
    print(match)
else:
    print("匹配失败")

这段函数的输出结果为:
在这里插入图片描述

4 findall

findall与research的严格程度类似,均是寻找字符串中与正则表达式匹配的字符串片段。不同的是findall将会找到所有的匹配结果,并且将所有的匹配结果组成一个列表进行返回。

import re

text = "Hello, world! How are you? world"
pattern = "world"

match = re.findall(pattern, text)
if match:
    print(match)
else:
    print("匹配失败")

在这里插入图片描述

5 finditer

finditeryufindall都是寻找字符串中与正则表达式匹配的字符串片段的所有结果。与findall()函数不同的是,finditer()函数返回的是一个迭代器,并可以获取更多的信息,如匹配字符串的起始和终止位置。

import re

text = "Hello, world! How are you? world"
pattern = "world"

match = re.finditer(pattern, text)
if match:
    print(match)
else:
    print("匹配失败")

此时的输出是:<callable_iterator object at 0x00000207930EDDC0>
如果我们对这个迭代器进行遍历

print([i for i in match])

在这里插入图片描述
就可以看到这个迭代器的详细信息,其每次都会返回一个object,与search等函数的返回格式类似。

6 split

re.split()是python中正则表达式库re中的一个函数,用于在字符串中按照指定的规则分割字符串。该函数接受两个参数:第一个是要分割的字符串,第二个是分割规则(正则表达式)。它返回一个字符串列表,每个字符串代表一个分割后的部分。
这个函数python内置的split函数很像,re.split()与split()的主要区别在于分割规则的不同。split()仅支持固定的分隔符,而re.split()支持使用正则表达式作为分割规则。这意味着,re.split()可以根据复杂的分割规则(例如以数字开头)来分割字符串,而split()不能。因此,在需要使用正则表达式进行分割时,应使用re.split()。
代码举例:

re_str = r'\d+'
str1 = 'qwer1tyui345osdfghj99876kl'
result = re.split(re_str,str1)
print(result)

这里\d+是一个正则表达式,代表的是一个或多个数字。分割的结果为:
在这里插入图片描述

7 sub

re.sub()是python中正则表达式库re中的一个函数,用于在字符串中替换与指定正则表达式匹配的部分。该函数接受三个参数:第一个是替换规则(正则表达式),第二个是要替换的字符串,第三个是要被替换的字符串。它返回一个替换后的字符串。
代码举例:

import re

re_str = r'\d+'
str1 = 'qwer1tyui345osdfghj99876kl'
str1 = re.sub(re_str, '一二三',str1) # 用'一二三'替换str1中所有匹配re_str的子串
print(str1)

在这里插入图片描述

8 compile

re.compile()是python中正则表达式库re中的一个函数,用于编译正则表达式,以便多次使用。编译后的正则表达式可以作为参数传递给其他正则表达式函数(例如re.search(),re.match(),re.findall()等)。
代码示例:

import re

re_pattern = re.compile(r'\d+')
str1 = 'qwer1tyui345osdfghj99876kl'
result1 = re_pattern.findall(str1)
result2 = re_pattern.search(str1)
print(result1)
print(result2)

这段代码的输出为
在这里插入图片描述
可以看到,当需要重复使用正则方法时,这个函数还是很有用的。

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

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

相关文章

96. BERT预训练代码

利用实现的BERT模型和从WikiText-2数据集生成的预训练样本&#xff0c;我们将在本节中在WikiText-2数据集上对BERT进行预训练。 import torch from torch import nn from d2l import torch as d2l首先&#xff0c;我们加载WikiText-2数据集作为小批量的预训练样本&#xff0c;…

Logstash:如何使用 Logstash 解析并摄入 JSON 数据到 Elasticsearch

在我之前的文章 “Logstash&#xff1a;Data 转换&#xff0c;分析&#xff0c;提取&#xff0c;丰富及核心操作” 有涉及到这个话题。今天我想使用一个具体的例子来更深入地展示。 准备数据 我们先来把如下的数据拷贝下来&#xff0c;并保存到一个叫做 sample.json 的文件中。…

OS 学习笔记(5) 操作系统的体系结构

OS 学习笔记(5) 操作系统的体系结构 王道OS 1.4 操作系统的体系结构 文章目录OS 学习笔记(5) 操作系统的体系结构知识总览分层结构模块化操作系统的内核大内核 vs 微内核知识回顾与重要考点外核王道chap1 回顾英文表达、术语积累&#xff08;《操作系统概念》第九版、ostep 《O…

电子模块|心率血氧传感器模块MAX30102及其驱动代码

电子模块|心率血氧传感器模块MAX30102及其驱动代码实物照片模块简介工作原理原理图及引脚说明STM32软件驱动IIC通信代码数值转换代码main函数结果实物照片 模块简介 MAX30102是一个集成的脉搏血氧仪和心率监测仪生物传感器的模块。 它集成了一个红光LED和一个红外光LED、光电…

【经济学】MIT 微观经济学 Microeconomoics

MIT 微观经济学P1 Introduction and Supply & Demand约束优化和机会成本供给和需求P1 Introduction and Supply & Demand 约束优化和机会成本 微观经济学是研究如何个人和公司做决定在一个稀缺的世界。稀缺性是微观经济的驱动力。 微观经济学是一系列约束优化练习&a…

Hadoop安全之Kerberos

简介 安全无小事&#xff0c;我们常常要为了预防安全问题而付出大量的代价。虽然小区楼道里面的灭火器、消防栓常年没人用&#xff0c;但是我们还是要准备着。我们之所以愿意为了这些小概率事件而付出巨大的成本&#xff0c;是因为安全问题一旦发生&#xff0c;很多时候我们将…

自学数据分析——数据分析方法和模型

一、数据分析方法 数据分析的思维需要培养&#xff0c;先模仿别人&#xff0c;从模仿者到创造者。首先需要建立数据的敏感性&#xff0c;能快速了解数据在说什么&#xff0c;下面我们以抖音教育直播为例&#xff0c;首先来了解核心指标&#xff0c;以及各个指标所表示的含义。…

17.Stream流

目录 一.Stream流 1.1 什么是Stream流 1.2 Stream流思想 1.3 Stream流的三类方法 1.4 获取Stream流 1.4.1 集合获取Stream流的方式 1.4.2 数组获取Stream流的方式 1.5 中间方法 1.6 终结方法 1.7 收集Stream流 1.7.1 什么是收集Stream流 1.7.2 收集方法 一.Stream流…

Ant Design Vue 之a-tree-select

Ant Design Vue 是比较流行的vue框架之一&#xff0c;主要是展示a-tree-select 的简单用法&#xff0c;a-tree-select组件主要用于展示树结构的选择。 <template><a-spin :spinning"confirmLoading"><a-form :form"form"><a-form-ite…

CnOpenDataA股上市公司社会责任报告数据

一、数据简介 A股上市公司社会责任报告数据由和讯网自2013年开始独家策划的产品&#xff0c;也是国内首家上市公司社会责任专业测评产品。上市公司社会责任报告专业测评体系从股东责任、员工责任、供应商、客户和消费者权益责任、环境责任和社会责任五项考察&#xff0c;各项分…

Linux Workqueue

Linux Workqueue 1、前言 Workqueue 是内核里面很重要的一个机制&#xff0c;特别是内核驱动&#xff0c;一般的小型任务 (work) 都不会自己起一个线程来处理&#xff0c;而是扔到 Workqueue 中处理。Workqueue 的主要工作就是用进程上下文来处理内核中大量的小任务。 所以 …

基于php的旅游管理系统

摘要随着计算机技术&#xff0c;网络技术的迅猛发展&#xff0c;Internet 的不断普及&#xff0c;网络在各个领域里发挥了越来越重要的作用。特别是随着近年人民生活水平不断提高&#xff0c;在线旅游给人们的旅游业带来了更大的发展机遇。在经济快速发展的带动下&#xff0c;旅…

【Linux】tar命令打包 | 查看压缩文件 | 打包时忽略文件

tar命令打包 | 查看压缩文件 | 打包时忽略文件 等操作 1.起因 今天下午写阿狸bot的代码的时候&#xff0c;写错了aiofiles的保存操作 # 正确写法 async def write_file_aio(path:str, value):async with aiofiles.open(path, w, encodingutf-8) as f:await f.write(json.dump…

MyBatis持久层框架详细解读:核心配置文件

文章目录1. 前言2. 多环境配置3. 类型别名4. 对象工厂5. 总结1. 前言 前面我们在使用 MyBatis 开发时&#xff0c;编写核心配置文件替换 JDBC 中的连接信息&#xff0c;解决了 JDBC 硬编码的问题。其实&#xff0c;MyBatis 核心配置文件中还可以配置很多的内容。 MyBatis 的配…

mongodb分片

分片是MongoDB的扩展方式,通过分片能够增加更多的机器来用对不断增加的负载和数据,还不影响应用.1.分片简介分片是指将数据拆分,将其分散存在不同机器上的过程.有时也叫分区.将数据分散在不同的机器上,不需要功能强大的大型计算机就可以存储更多的数据,处理更大的负载.使用几乎…

屏幕录制下载推荐(可以无水印录制视频)

您有没有遇到过这种情况&#xff0c;在使用录屏工具录制电脑屏幕时&#xff0c;录制出来的视频是带有明显水印的。那有没有可以无水印录制的屏幕录制推荐呢&#xff1f;当然有。最近小编发现了一款可以无水印&#xff08;自定义图文水印&#xff09;录制的视频&#xff0c;快来…

Pycharm误触ignore的解决方法--有图

步骤1&#xff1a;进入pycharm编辑器之后&#xff0c;找到菜单栏中的file选项&#xff0c;点击之后会有一个下拉列表&#xff0c;直接选择settings&#xff0c;进入到设置的窗口。步骤2&#xff1a;在设置界面的左侧&#xff0c;找到Inspections选项&#xff0c;点击之后&#…

JavaScript 练手小技巧:拖拽事件、把图片拖拽入页面

HTML5 新增了拖拽事件 drag&#xff0c;利用它可以实现把外部文件拖拽入页面中&#xff0c;可以实现文件的读取&#xff0c;上传等等功能。 拖拽&#xff0c;又叫拖拉、拖动&#xff0c;英文为 drag。 拖拽事件是 HTML5 新增的事件操作。 拖拽指的是&#xff0c;用户在某个对…

【Rust】4. Rust 基础

4. Rust 基础 4.1 变量和可变性 4.1.1 常量 const xxx: type ...&#xff1a;常量使用 const 来定义&#xff0c;且必须注明值的类型常量在声明它的作用域之中&#xff0c;常量在整个程序生命周期中都有效 4.1.2 隐藏&#xff08;Shadowing&#xff09; 隐藏&#xff08;Sh…

基于卡尔曼滤波器的PID控制-1

采用M语言对算例进行仿真&#xff01;&#xff01;设置控制对象传递函数&#xff1a;取采样时间为1ms&#xff0c;采用Z变换将对象离散化&#xff0c;并描述为离散状态方程的形式&#xff1a;x(k 1) Ax(k) B(u(k)wk))y(k) Cx(k)带有测量噪声的被控对象输出为&#xff1a;yv(k)C…