当前位置: 首页 > news >正文

Python(20)正则表达式(Regular Expression)中常用函数用法

大家好!我是码银🥰

欢迎关注🥰:

CSDN:码银

公众号:码银学编程

正文 

正则表达式

粗略的定义:正则表达式是一个特殊的字符序列,帮助用户非常便捷的检查一个字符串是否符合某种模式。例如:平时我们的登陆密码,必须是字母和数字的组合,就可以使用正则表达式。

正则表达式的特点:灵活性、逻辑性和功能性非常强,可以迅速地用极简单的方式达到字符串的复杂控制。然而,对于刚接触的人来说,可能会觉得比较晦涩难懂。

Python有关正则表达式的方法是在re模块内,所以使用正则表达式需要导入re模块。

import re

本篇文章先介绍一下re模块中的几个函数:

函数功能
re.match()用于从字符串的开始位置进行匹配,如果起始位置匹配
成功,结果为Match对象,否则结果为None。
re.search()用于在整个字符串中搜索第一个匹配的值,如果匹配成
功,结果为Match对象,否则结果为None。
re.findall()用于在整个字符串搜索所有符合正则表达式的值,结果
是一个列表类型。
re.sub ()用于实现对字符串中指定子串的替换
re.split()字符串中aplit(方法功能相同,都是分隔字符串

re.match()

这个方法和re.search()方法类似,但是也有点小差别的:

  • re.match从字符串的开头开始匹配(也就是说待匹配字符在中间是匹配不到的),如果找到匹配项,则返回一个匹配对象;如果没有找到匹配项,则返回None。
  • re.search在整个字符串中搜索匹配项,如果找到匹配项,则返回一个匹配对象;如果没有找到匹配项,则返回None。
import re  # 定义一个字符串变量msg,包含一段描述  
msg = 'During my two years living in London, I found that the British people really enjoy eating and drinking outdoors.'  # 定义一个字符串变量pattern,包含我们要在msg中搜索的文本模式  
pattern = 'During'  # 使用re.match函数搜索msg中与pattern匹配的文本。如果找到匹配项,则返回一个匹配对象;否则返回None  
txt = re.match(pattern,msg)  # 检查是否找到了匹配项  
if txt!=None :  # 如果找到了匹配项,则打印匹配的文本  print("测试1输出: ", txt.group())  
else:  # 如果没有找到匹配项,则打印“测试1搜寻失败”  print("测试1搜寻失败")  # 定义另一个字符串变量pattern2,包含我们要在msg中搜索的另一个文本模式  
pattern2='my'  txt = re .match(pattern2, msg)  if txt!=None:  print("测试2输出:",txt.group())  
else:   print("测试2搜寻失败")

re.search()

由于re.search()方发是全文搜索,所以文章中只要出现对应字符串(开头、中间位置都无所谓,这是与re.match最大的区别),就会返回正确结果。 

import remsg = 'During my two years living in London, I found that the British people really enjoy eating and drinking outdoors.'  
pattern = 'During'
txt = re.search(pattern, msg)if txt != None:print("测试1输出: ", txt.group())
else: print("测试1搜寻失败")  pattern2 = 'my'
txt = re.search(pattern2, msg)if txt != None:print("测试2输出:", txt.group())
else:print("测试2搜寻失败")
输出结果:
测试1输出:  During
测试2输出: my

re.findall()

re.findall(pattern, string, flags=0),用于在整个字符串搜索所有符合正则表达式的值,结果
是一个列表类型

  • pattern:正则表达式模式,用于匹配字符串。
  • string:要搜索的字符串。
  • flags:可选参数,指定正则表达式的匹配选项,如多行匹配、忽略大小写等。
import re# 定义一个正则表达式模式,匹配所有的数字
pattern = r'\d+'# 要搜索的字符串
string = 'abc123 def456 ghi789'# 使用 re.findall() 查找所有匹配项
matches = re.findall(pattern, string)print(matches)  

其中\d是“元字符”,具有特殊意义的专用字符,在另外一章文章中在做解释吧。 

在上面的示例中,我们定义了一个正则表达式模式 \d+,用于匹配一个或多个数字。然后,我们使用 re.findall() 函数在字符串 abc123 def456 ghi789 中查找所有匹配项。最后,我们将结果打印出来,可以看到成功匹配到了所有的数字。

re.sub ()

re.sub(pattern, repl, string, count=0, flags=0),用于在字符串中使用正则表达式进行查找和替换 

  • pattern:正则表达式模式,用于匹配字符串。
  • repl:替换模式,表示找到匹配项后要替换成的字符串。
  • string:要搜索的字符串。
  • count:可选参数,指定替换操作的次数,默认为 0 表示替换所有匹配项。
  • flags:可选参数,指定正则表达式的匹配选项,如多行匹配、忽略大小写等。
import re
msg = 'During my two years living in London'
pattern1 = 'years'
#欲搜寻字符串
newstr = 'days'
#新字符串
txt = re.sub(pattern1 ,newstr ,msg)
#如果找到则取代
if txt != msg:print("取代成功:", txt)
else:print("取代失败:",txt)pattern2 = 'Eli Thomson'
#欲搜寻字符串
txt = re.sub(pattern2,newstr,msg)
#如果找到则取代
if txt!= msg:print("取代成功:",txt)
else:print("取代失败: " ,txt)
D:\anaconda2019\python.exe D:/pyprogect/正则表达式/test1.py
取代成功: During my two days living in London
取代失败:  During my two years living in London

re.split()

 re.split(pattern, string, maxsplit=0, flags=0),用于根据正则表达式模式将字符串分割成多个子字符串,并返回一个包含所有子字符串的列表。

  • pattern:正则表达式模式,用于指定分割规则。
  • string:要分割的字符串。
  • maxsplit:可选参数,指定最大分割次数,默认为 0 表示不限制分割次数。
  • sflags:可选参数,指定正则表达式的匹配选项,如多行匹配、忽略大小写等。
import res='https://www.baidu.com/s?wd=CSDN&ie=utf-8&tn=54093922_14_hao_pg'
pattern='[?|&]'
txt=re.split(pattern,s)
print(txt)pattern = ','
string = 'apple,banana,orange'
split_strings = re.split(pattern, string)
print(split_strings)  # 输出: ['apple', 'banana', 'orange']

 输出结果:

D:\anaconda2019\python.exe D:/pyprogect/正则表达式/test2.py
['https://www.baidu.com/s', 'wd=CSDN', 'ie=utf-8', 'tn=54093922_14_hao_pg']
['apple', 'banana', 'orange']Process finished with exit code 0

相关文章:

Python(20)正则表达式(Regular Expression)中常用函数用法

大家好!我是码银🥰 欢迎关注🥰: CSDN:码银 公众号:码银学编程 正文 正则表达式 粗略的定义:正则表达式是一个特殊的字符序列,帮助用户非常便捷的检查一个字符串是否符合某种模…...

docker 离线安装镜像

一、导出镜像 下载完镜像后&#xff0c;我们需要将其导出为tar文件&#xff0c;以便在离线环境中使用。 执行以下命令导出镜像&#xff1a; docker save -o <保存路径>/<镜像名>_<版本>.tar <镜像名>:<版本>其中&#xff0c;<保存路径>是…...

由vscode自动升级导致的“终端可以ssh服务器,但是vscode无法连接服务器”

问题描述 简单来说就是&#xff0c;ssh配置没动&#xff0c;前两天还可以用vscode连接服务器&#xff0c;今天突然就连不上了&#xff0c;但是用本地终端ssh可以顺利连接。 连接情况 我的ssh配置如下&#xff1a; Host gpu3HostName aaaUser zwx现在直接在终端中进行ssh&am…...

typecho 在文章中添加 bilibili 视频

一、获取视频来源&#xff1a; 可以有2种方式来定位一个 bilibili 视频&#xff1a; 第一种是使用 bvid 参数定位第二种是使用 aid 参数定位 如何获取这两个参数&#xff1f; 首先我们可以看看 bilibili 网站中的视频页面链接其实可以分为两种&#xff1a; 第一种是类似&a…...

Android.mk 语法详解

一.Android.mk简介 Android.mk 是Android 提供的一种makefile 文件,注意用来编译生成&#xff08;exe&#xff0c;so&#xff0c;a&#xff0c;jar&#xff0c;apk&#xff09;等文件。 二.Android.mk编写 分析一个最简单的Android.mk LOCAL_PATH : $(call my-dir) //定义了…...

ChatGPT高效提问—prompt基础

ChatGPT高效提问—prompt基础 ​ 设计一个好的prompt对于获取理想的生成结果至关重要。通过选择合适的关键词、提供明确的上下文、设置特定的约束条件&#xff0c;可以引导模型生成符合预期的回复。例如&#xff0c;在对话中&#xff0c;可以使用明确的问题或陈述引导模型生成…...

Elasticsearch 中的索引的分区(Shards)和副本(Replicas)的使用

Elasticsearch是一个高性能的、分布式的搜索与数据分析引擎&#xff0c;广泛用于全文搜索、结构化搜索、分析以及这三者的组合场景。在Elasticsearch中&#xff0c;“索引”&#xff08;Index&#xff09;是其最基本的数据管理单位&#xff0c;可以类比为传统关系数据库中的“数…...

智慧工地反光衣识别检测系统-自动识别是否穿着制定工作服---豌豆云

智慧工地反光衣识别检测特定地区工作人员不穿反光服装个人行为预警&#xff0c;一旦检测到某些不穿反光服装施工作业人员智慧工地反光衣识别检测马上开启警报。 真真正正做到事前预警、事中检测、过后管理。安全操作规程工作人员从繁杂无趣的盯显示屏的每日任务中抽身出去。 …...

vue绘制语音波形图---wavesurfer.js

文章目录 创建实例optionsmethod接收Blob流 https://wavesurfer.xyz/ 创建实例 引入插件&#xff1a;import WaveSurfer from "wavesurfer.js"创建实例对象&#xff1a;this.wavesurfer WaveSurfer.create(options); <div id"waveform"><!-- t…...

MPLS——多协议标签交换

目录 1 多协议标签交换 MPLS 1.1 MPLS 的工作原理 1.1.1 MPLS 工作特点 1.1.2 MPLS 协议的基本原理 1.1.3 MPLS 的基本工作过程 1.2 转发等价类 FEC 1.2.1 FEC 用于负载平衡 1.3 MPLS 首部的位置与格式 1.3.1 MPLS 首部的位置 1.3.2 MPLS 首部的格式 1.4 新一代的…...

Idea使用Lombok失效解决方案

问题描述 启动项目时&#xff0c;使用lombok插件中slf4g注解后其中的log显示找不到变量 解决方案 在以下位置加入该配置-Djps.track.ap.dependenciesfalse Preferences | Build, Execution, Deployment | Compiler 之后保存应用就好&#xff0c;亲测有效。...

Java实现网上药店系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 药品类型模块2.3 药品档案模块2.4 药品订单模块2.5 药品收藏模块2.6 药品资讯模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 角色表3.2.2 药品表3.2.3 药品订单表3.2.4 药品收藏表3.2.5 药品留言表…...

谁是嫌疑犯问题

问题描述&#xff1a; 有6名犯罪嫌疑人A、B、C、D、E、F&#xff0c;已知如下事实&#xff1a; A、B至少有1人作案&#xff1b; A、E、F三人中至少有2人参与作案&#xff1b; A、D不可能是同案犯&#xff1b; B、C或同时作案&#xff0c;或与本案无关&#xff1b; C、D中…...

Netty中使用编解码器框架

目录 什么是编解码器&#xff1f; 解码器 将字节解码为消息 将一种消息类型解码为另一种 TooLongFrameException 编码器 将消息编码为字节 将消息编码为消息 编解码器类 通过http协议实现SSL/TLS和Web服务 什么是编解码器&#xff1f; 每个网络应用程序都必须定义如何…...

【漏洞复现】斐讯FIR151M路由器未授权下载漏洞

Nx01 产品简介 斐讯数据通信技术有限公司成立于2009年&#xff0c;是为用户提供智慧家庭领域智能产品和云服务的科技创新性企业。 Nx02 漏洞描述 斐讯 FIR151M路由器配置文件未授权下载漏洞,攻击者可利用该漏洞获取敏感信息。 Nx03 产品主页 fofa-query: app"PHICOMM-F…...

【SpringBoot】application配置(5)

type-aliases-package: com.rabbiter.cm.domaintype-aliases-package: 这个配置用于指定mybatis的别名&#xff0c;别名是一个简化的方式&#xff0c;让你在Mapper xml 文件中引用java类型&#xff0c;而不需要使用使用完整的类名。例如&#xff0c;如果你在 com.rabbiter.cm.d…...

Linux安全技术与iptables防火墙

一.安全技术&#xff1a; 入侵检测系统&#xff08;Intrusion Detection Systems&#xff09;&#xff1a;特点是不阻断任何网络访问&#xff0c;量化、定位来自内外网络的威胁情况&#xff0c;主要以提供报警和事后监督为主&#xff0c;提供有针对性的指导措施和安全决策依据,…...

QT QCombox 样式表 比起作用

对QCombox在ui编辑器中进行美化&#xff0c;发现外表美化有效果&#xff0c;但下拉框的高度美化的没效果&#xff0c;查看样式表也没有没问题&#xff0c;样式表中内容如下。 QComboBox#curve_comboBox {min-width: 150px;min-height:40;max-width: 150px;max-height:40;borde…...

在 Windows 10 上使用 Visual Studio 2022 进行 C++ 桌面开发

工具下载链接&#xff1a;https://pan.quark.cn/s/c70b23901ccb 环境介绍 在今天的快速发展的软件开发行业中&#xff0c;选择合适的开发环境是非常关键的一步。对于C开发人员来说&#xff0c;Visual Studio 2022&#xff08;VS2022&#xff09;是一个强大的集成开发环境&…...

如何安装x11vnc并结合cpolar实现win远程桌面Deepin

文章目录 1. 安装x11vnc2. 本地远程连接测试3. Deepin安装Cpolar4. 配置公网远程地址5. 公网远程连接Deepin桌面6. 固定连接公网地址7. 固定公网地址连接测试 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通俗易懂&#xff…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

​​企业大模型服务合规指南:深度解析备案与登记制度​​

伴随AI技术的爆炸式发展&#xff0c;尤其是大模型&#xff08;LLM&#xff09;在各行各业的深度应用和整合&#xff0c;企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者&#xff0c;还是积极拥抱AI转型的传统企业&#xff0c;在面向公众…...