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

33.Python从入门到精通—Python3 正则表达式 re.match函数 re.search方法 re.match与re.search的区别

33.从入门到精通:Python3 正则表达式 re.match函数 re.search方法 re.match与re.search的区别

  • Python3 正则表达式
    • re.match函数
    • re.search方法
    • re.match与re.search的区别

Python3 正则表达式

在 Python3 中,可以使用 re 模块来进行正则表达式的匹配和处理。
以下是一个简单的例子,说明如何使用 re 模块进行正则表达式匹配:

import re# 要匹配的字符串
text = "Hello, world! This is a test."# 匹配所有的单词
pattern = r"\w+"
matches = re.findall(pattern, text)# 输出匹配结果
print(matches)

在这个例子中,首先定义了一个要匹配的字符串 text,然后使用 re.findall() 函数来匹配所有的单词。在正则表达式中,\w+ 表示匹配一个或多个字母、数字或下划线。最后输出匹配结果。
除了 re.findall() 函数之外,还有其他一些常用的函数,例如:

  • re.match():从字符串的开头开始匹配,只匹配一个结果。
  • re.search():在字符串中搜索匹配项,只匹配一个结果。
  • re.sub():替换字符串中的匹配项。

以下是一个更复杂的例子,说明如何使用正则表达式进行邮箱地址的验证:

import re# 要验证的邮箱地址
email = "test@example.com"# 邮箱地址的正则表达式
pattern = r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"# 验证邮箱地址是否合法
if re.match(pattern, email):print("Valid email address")
else:print("Invalid email address")

在这个例子中,首先定义了一个要验证的邮箱地址 email,然后定义了一个正则表达式 pattern,用于匹配合法的邮箱地址。正则表达式中,^[a-zA-Z0-9._%+-]+表示匹配一个或多个字母、数字、点号、下划线、百分号、加号或减号,@[a-zA-Z0-9.-]+表示匹配一个或多个字母、数字、点号或减号,.[a-zA-Z]{2,}$ 表示匹配一个或多个字母,长度至少为 2,且以点号结尾。

  • 最后使用 re.match() 函数验证邮箱地址是否合法。如果匹配成功,则输出 Valid email address,否则输出
    Invalid email address。 需要注意的是,正则表达式的语法比较复杂,需要仔细理解和使用。在编写正则表达式时,可以使用在线工具来测试和调试,例如 Regex101 或 RegExr。

re.match函数

re.match()函数是Python中re模块中的一个函数,用于尝试从字符串的起始位置匹配一个正则表达式模式。如果匹配成功,match()函数返回一个匹配对象,否则返回None。
下面是一个简单的例子,说明如何使用re.match()函数:

import re# 匹配以hello开头的字符串
pattern = r'hello'
string = 'hello world'
match_obj = re.match(pattern, string)# 判断是否匹配成功
if match_obj:print('Match succeeded.')
else:print('Match failed.')

在这个例子中,首先定义了一个正则表达式模式,用于匹配以hello开头的字符串。然后定义了一个字符串,用于进行匹配。接着使用re.match()函数进行匹配,如果匹配成功,match()函数返回一个匹配对象,否则返回None。最后根据返回值判断匹配是否成功,并输出相应的提示信息。

需要注意的是,re.match()函数只会尝试从字符串的起始位置进行匹配。如果要匹配整个字符串,可以使用re.search()函数。如果要匹配多个字符串,可以使用re.findall()函数。

re.search方法

re.search() 方法是 Python 中 re 模块中的一个函数,用于在字符串中搜索匹配项。如果匹配成功,search() 函数返回一个匹配对象,否则返回 None。
以下是一个简单的例子,说明如何使用 re.search() 函数

import re# 要搜索的字符串
text = "Hello, world! This is a test."
# 搜索包含单词 test 的字符串
pattern = r"test"
match_obj = re.search(pattern, text)
# 判断是否搜索成功
if match_obj:print("Match succeeded.")# 输出匹配结果print(match_obj.group())
else:print("Match failed.")
  • 在这个例子中,首先定义了一个要搜索的字符串 text,然后使用 re.search() 函数搜索包含单词 test的字符串。如果搜索成功,search() 函数返回一个匹配对象,否则返回 None。最后根据返回值判断搜索是否成功,并输出相应的提示信息。

需要注意的是,re.search() 函数只会搜索第一个匹配项。如果要搜索所有的匹配项,可以使用 re.findall() 函数。

re.match与re.search的区别

在 Python 的 re 模块中,re.match() 和 re.search() 都是用于正则表达式匹配的函数,但它们之间有一些区别。

re.match() 函数只匹配字符串的开头,如果字符串开头不符合正则表达式,则匹配失败,返回 None。例如:

import retext = "hello world"
pattern = r"world"
match_obj = re.match(pattern, text)
print(match_obj)  # None

在这个例子中,正则表达式 “world” 不匹配字符串 “hello world” 的开头,因此 re.match() 函数返回 None。

re.search() 函数匹配整个字符串,直到找到第一个符合正则表达式的子串。例如:

import retext = "hello world"
pattern = r"world"
match_obj = re.search(pattern, text)
print(match_obj)  # <re.Match object; span=(6, 11), match='world'>

在这个例子中,正则表达式 “world” 匹配字符串 “hello world” 中的子串 “world”,因此 re.search()
函数返回一个匹配对象。

re.match() 函数只匹配字符串的开头,因此它的效率比 re.search() 函数高。如果只需要匹配字符串的开头,可以使用 re.match() 函数。例如:

import retext = "hello world"
pattern = r"hello"
match_obj = re.match(pattern, text)
print(match_obj)  # <re.Match object; span=(0, 5), match='hello'>

在这个例子中,正则表达式 “hello” 匹配字符串 “hello world” 的开头,因此 re.match() 函数返回一个匹配对象。

需要注意的是,re.match() 和 re.search() 函数都只匹配第一个符合正则表达式的子串。如果需要匹配所有符合条件的子串,可以使用 re.findall() 函数。

相关文章:

33.Python从入门到精通—Python3 正则表达式 re.match函数 re.search方法 re.match与re.search的区别

33.从入门到精通&#xff1a;Python3 正则表达式 re.match函数 re.search方法 re.match与re.search的区别 Python3 正则表达式re.match函数re.search方法re.match与re.search的区别 Python3 正则表达式 在 Python3 中&#xff0c;可以使用 re 模块来进行正则表达式的匹配和处理…...

便携式气象站是什么

TH-BQX5便携式气象站是一种用于应对突发天气灾害和紧急情况的便携式气象监测设备。它通常包括气温、湿度、气压、风速、风向和降水量等关键气象要素的测量功能&#xff0c;能够快速准确地记录这些气象参数。此外&#xff0c;一些高级的便携式气象站还具备预警功能&#xff0c;当…...

AIGC重塑金融:AI大模型驱动的金融变革与实践

随着人工智能技术的飞速发展&#xff0c;AI大模型在金融领域的应用日益广泛&#xff0c;正在深刻改变着金融行业的面貌。本文将探讨AIGC&#xff08;人工智能与金融结合&#xff09;如何重塑金融&#xff0c;以及AI大模型驱动的金融变革与实践。 AIGC重塑金融的背景与意义 随着…...

TP4054替代DP4054锂电池供电电路保护方案

锂离子电池以其优良的特性&#xff0c;被广泛应用于&#xff1a;手机、摄录像机、笔记本电脑、无绳电话、电动工具、遥控或电动玩具、照相机等便携式电子设备中。 01 电池特点 1、具有更高的重量能量比、体积能量比; 2、电压高&#xff0c;单节锂电池电压为3.6V&#xff0c;等…...

前端JS商品规格组合

给定一个数组 let data [{name: "颜色",specs: ["白色", "黑色"],},{name: "尺寸",specs: ["14寸","15寸", "16寸"],},{name: "处理器",specs: ["i5", "i7", "i9&…...

⾃定义类型:联合和枚举

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 点击主页&#xff1a;optimistic_chen和专栏&#xff1a;c语言&#xff0c; 创作不易&#xff0c;大佬们点赞鼓…...

Spring IOC控制反转、DI注入以及配置

1.使用xml的方式进行配置IOC容器&#xff0c;首先引入依赖 在Resource资源下配置&#xff0c;applicationContext.xml ,刷新mevan后可以直接选择配置spring.xml文件 <!-- spring核心用来管理bean --><dependency><groupId>org.springframework</g…...

RabbitMQ的部分模式

1发布订阅模式 发送者 package org.example; import com.alibaba.fastjson.JSON; import com.rabbitmq.client.BuiltinExchangeType; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import ja…...

提取单选框的值,并通过ajax传值到后台

<!DOCTYPE html> <html lang"zh" xmlns:th"http://www.thymeleaf.org" xmlns:shiro"http://www.pollix.at/thymeleaf/shiro"> <head><th:block th:include"include :: header(日库存更新提示)" /> </head&…...

Django创建多app应用

目录 1. 引言 2. 多app创建的两种方式 2.1 多个app结构 2.2 单个apps多个app 3. 最后 1. 引言 在平常业务开发中&#xff0c;我们遇到的功能可能会有很多&#xff0c;单个app的应用可能无法满足我们 这个时候&#xff0c;我们就需要多app应用&#xff0c;例如&#xff1a…...

如何反反爬虫

我们来讲最常见的反反爬虫方法 import requests r requests.get(网页网址) print(r.requests.headers) 一.使用简单的方法把请求头改为真的浏览器模式 import requests link网页地址 heraders{User-Agent:} rrequests.get(link,headersheaders) print(r.requsts.headers)我们…...

wireshark抓包之DNS协议

DNS协议 DNS协议的主要作用是将域名解析为对应的IP地址。当我们在浏览器中输入一个网址时&#xff0c;计算机需要通过DNS协议来查找该网址对应的IP地址&#xff0c;以便能够建立连接并访问目标资源。 DNS协议的工作流程大致如下&#xff1a; 用户的计算机或设备&#xff08;充…...

升级到 Java 21 是值得的

升级到 Java 21 是值得的 又到了一年中的这个时候——New Relic 的年度“State of the Java Ecosystem”调查结果出来了&#xff0c;我一如既往地深入研究了它。虽然我认为该报告做得很好并且提出了很好的问题&#xff0c;但我对有多少 Java 开发人员正在使用低版本感到沮丧。…...

C# 多线程

文章目录 C# 多线程进程与线程无参数的子线程带参数的子线程运行结果 销毁线程 Abort()运行结果 ThreadPool和Task运行结果 异步与同步运行结果 lock单线程运行结果 多线程运行结果 使用lock运行结果 C# 多线程 进程与线程 进程&#xff1a;进程就是一个应用程序&#xff0c;…...

快速安装sudachipy日语包

1、前往 https://rustup.rs 下载并安装 Rustup Linux系统可直接运行以下命令 Window系统需要去网站下载exe包 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh2、安装 Rust 编译器 rustup install stable3、设置默认版本 rustup default stable4、重新安装 …...

蓝桥杯刷题day13——乘飞机【算法赛】

一、问题描述 等待登机的你看着眼前有老有小长长的队伍十分无聊&#xff0c;你突然想要知道&#xff0c;是否存在两个年龄相仿的乘客。每个乘客的年龄用一个 0 到 36500 的整数表示&#xff0c;两个乘客的年龄相差 365 以内就认为是相仿的。 具体来说&#xff0c;你有一个长度…...

大模型量化技术-BitsAndBytes

Transformers 量化技术 BitsAndBytes bitsandbytes是将模型量化为8位和4位的最简单选择。 8位量化将fp16中的异常值与int8中的非异常值相乘,将非异常值转换回fp16,然后将它们相加以返回fp16中的权重。这减少了异常值对模型性能产生的降级效果。4位量化进一步压缩了模型,并且…...

EasyExcel 复杂表头的导出(动态表头和静态表头)

问题&#xff1a;如图&#xff0c;1部分的表头是动态的根据日期变化&#xff0c;2部分是数据库对应的字段&#xff0c;静态不变的&#xff1b; 解决方案&#xff1a;如果不看1的部分&#xff0c;2部分内容可以根据实体类注解的方式导出&#xff0c;那么我们是不是可以先将动态表…...

centos7 fatal error: curl/curl.h: No such file or directory

若编译遇到此问题&#xff0c;可以查看环境是否libcurl库 yum list installed | grep libcurl 发现未安装libcurl库 执行libcurl库的安装命令&#xff1a; 1.对于Debian/Ubuntu系统&#xff1a; sudo apt-get install libcurl4-openssl-dev 2.对于RHEL/CentOS系统&#xf…...

【Linux】自定义协议+序列化+反序列化

自定义协议序列化反序列化 1.再谈 "协议"2.Cal TCP服务端2.Cal TCP客户端4.Json 喜欢的点赞&#xff0c;收藏&#xff0c;关注一下把&#xff01; 1.再谈 “协议” 协议是一种 “约定”。在前面我们说过父亲和儿子约定打电话的例子&#xff0c;不过这是感性的认识&a…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...