当前位置: 首页 > 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…...

【Arcgis实战技巧】巧用DOM目视解译,从DSM中精准“挖”出地面高程点

1. 为什么需要从DSM中提取地面高程点&#xff1f; 在测绘和地理信息领域&#xff0c;数字表面模型&#xff08;DSM&#xff09;记录了地表所有物体的顶部高程信息&#xff0c;包括建筑物、树木、电线杆等。但很多时候我们需要的是数字高程模型&#xff08;DEM&#xff09;&…...

5个关键步骤掌握PyAEDT:从安装到高级仿真实战指南

5个关键步骤掌握PyAEDT&#xff1a;从安装到高级仿真实战指南 【免费下载链接】pyaedt AEDT Python Client Package 项目地址: https://gitcode.com/gh_mirrors/py/pyaedt PyAEDT作为Ansys Electronics Desktop的Python客户端库&#xff0c;为工程师提供了强大的电子设计…...

ARM GICv3虚拟中断控制器与ICH_LR寄存器详解

1. ARM GICv3虚拟中断控制器架构概述 在现代计算机系统中&#xff0c;中断控制器是管理硬件中断的核心组件。ARM架构的通用中断控制器&#xff08;Generic Interrupt Controller&#xff0c;GIC&#xff09;经过多代演进&#xff0c;GICv3版本引入了对虚拟化的全面支持。虚拟化…...

VMware Unlocker 3.0:5分钟快速配置macOS虚拟机终极指南

VMware Unlocker 3.0&#xff1a;5分钟快速配置macOS虚拟机终极指南 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker VMware Unlocker 3.0是一款专为破解VMware限制而设计的开源工具&#xff0c;让您能在…...

产品经理必备:Gemini3.1Pro高效撰写需求文档指南

做产品经理的人&#xff0c;大多都写过需求文档&#xff0c;但真正让人头疼的&#xff0c;往往不是“写”&#xff0c;而是“写得清楚”。 需求背景要交代&#xff0c;目标要明确&#xff0c;流程要完整&#xff0c;边界条件要说明&#xff0c;异常情况还不能漏&#xff0c;最后…...

算法23,寻找峰值

这是一道经典的二分查找应用题&#xff1a;寻找峰值&#xff08;Find Peak Element&#xff09;。笔记中已经总结了核心逻辑&#xff0c;我将为你梳理其背后的数学原理&#xff08;二段性&#xff09;&#xff0c;并提供标准的代码实现。1. 核心原理&#xff1a;什么是“二段性…...

收藏 | 程序员小白也能掌握大模型开发,AI时代大有可为!

收藏 | 程序员小白也能掌握大模型开发&#xff0c;AI时代大有可为&#xff01; 本文针对非AI专业背景的程序员&#xff0c;介绍了如何参与大模型应用开发。内容涵盖大模型基础、提示词编写与提示工程技巧&#xff0c;以及使用OpenAI API和LangChain框架进行应用开发的关键步骤。…...

收藏!AI时代程序员是消失还是逆袭?小白程序员必看大模型逆袭指南

收藏&#xff01;AI时代程序员是消失还是逆袭&#xff1f;小白程序员必看大模型逆袭指南 文章探讨了AI对程序员行业的影响&#xff0c;指出AI抢走了程序员一半的饭碗&#xff0c;但也为另一半人打开了高阶职场的大门。初级岗位因AI工具普及而面临失业风险&#xff0c;但高级技术…...

基于ChatGPT与Next.js的React组件自然语言生成器开发实战

1. 项目概述&#xff1a;一个由ChatGPT驱动的React组件实时生成器 作为一名在React生态里摸爬滚打了多年的前端开发者&#xff0c;我深知从零开始构建一个UI组件&#xff0c;尤其是那些需要反复调整样式和交互逻辑的组件&#xff0c;是多么耗时耗力。我们常常在Figma里画好了设…...

基于MCP协议构建技术生态分析工具:架构设计与工程实践

1. 项目概述&#xff1a;一个技术生态分析工具的诞生最近在折腾一个挺有意思的东西&#xff0c;一个叫apifyforge/tech-ecosystem-analysis-mcp的项目。光看这个名字&#xff0c;可能有点唬人&#xff0c;但说白了&#xff0c;它就是一个用来“解剖”技术生态系统的工具。想象一…...