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.从入门到精通:Python3 正则表达式 re.match函数 re.search方法 re.match与re.search的区别 Python3 正则表达式re.match函数re.search方法re.match与re.search的区别 Python3 正则表达式 在 Python3 中,可以使用 re 模块来进行正则表达式的匹配和处理…...
便携式气象站是什么
TH-BQX5便携式气象站是一种用于应对突发天气灾害和紧急情况的便携式气象监测设备。它通常包括气温、湿度、气压、风速、风向和降水量等关键气象要素的测量功能,能够快速准确地记录这些气象参数。此外,一些高级的便携式气象站还具备预警功能,当…...
AIGC重塑金融:AI大模型驱动的金融变革与实践
随着人工智能技术的飞速发展,AI大模型在金融领域的应用日益广泛,正在深刻改变着金融行业的面貌。本文将探讨AIGC(人工智能与金融结合)如何重塑金融,以及AI大模型驱动的金融变革与实践。 AIGC重塑金融的背景与意义 随着…...
TP4054替代DP4054锂电池供电电路保护方案
锂离子电池以其优良的特性,被广泛应用于:手机、摄录像机、笔记本电脑、无绳电话、电动工具、遥控或电动玩具、照相机等便携式电子设备中。 01 电池特点 1、具有更高的重量能量比、体积能量比; 2、电压高,单节锂电池电压为3.6V,等…...
前端JS商品规格组合
给定一个数组 let data [{name: "颜色",specs: ["白色", "黑色"],},{name: "尺寸",specs: ["14寸","15寸", "16寸"],},{name: "处理器",specs: ["i5", "i7", "i9&…...
⾃定义类型:联合和枚举
乐观学习,乐观生活,才能不断前进啊!!! 我的主页:optimistic_chen 我的专栏:c语言 点击主页:optimistic_chen和专栏:c语言, 创作不易,大佬们点赞鼓…...
Spring IOC控制反转、DI注入以及配置
1.使用xml的方式进行配置IOC容器,首先引入依赖 在Resource资源下配置,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. 引言 在平常业务开发中,我们遇到的功能可能会有很多,单个app的应用可能无法满足我们 这个时候,我们就需要多app应用,例如:…...
如何反反爬虫
我们来讲最常见的反反爬虫方法 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地址。当我们在浏览器中输入一个网址时,计算机需要通过DNS协议来查找该网址对应的IP地址,以便能够建立连接并访问目标资源。 DNS协议的工作流程大致如下: 用户的计算机或设备(充…...
升级到 Java 21 是值得的
升级到 Java 21 是值得的 又到了一年中的这个时候——New Relic 的年度“State of the Java Ecosystem”调查结果出来了,我一如既往地深入研究了它。虽然我认为该报告做得很好并且提出了很好的问题,但我对有多少 Java 开发人员正在使用低版本感到沮丧。…...
C# 多线程
文章目录 C# 多线程进程与线程无参数的子线程带参数的子线程运行结果 销毁线程 Abort()运行结果 ThreadPool和Task运行结果 异步与同步运行结果 lock单线程运行结果 多线程运行结果 使用lock运行结果 C# 多线程 进程与线程 进程:进程就是一个应用程序,…...
快速安装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——乘飞机【算法赛】
一、问题描述 等待登机的你看着眼前有老有小长长的队伍十分无聊,你突然想要知道,是否存在两个年龄相仿的乘客。每个乘客的年龄用一个 0 到 36500 的整数表示,两个乘客的年龄相差 365 以内就认为是相仿的。 具体来说,你有一个长度…...
大模型量化技术-BitsAndBytes
Transformers 量化技术 BitsAndBytes bitsandbytes是将模型量化为8位和4位的最简单选择。 8位量化将fp16中的异常值与int8中的非异常值相乘,将非异常值转换回fp16,然后将它们相加以返回fp16中的权重。这减少了异常值对模型性能产生的降级效果。4位量化进一步压缩了模型,并且…...
EasyExcel 复杂表头的导出(动态表头和静态表头)
问题:如图,1部分的表头是动态的根据日期变化,2部分是数据库对应的字段,静态不变的; 解决方案:如果不看1的部分,2部分内容可以根据实体类注解的方式导出,那么我们是不是可以先将动态表…...
centos7 fatal error: curl/curl.h: No such file or directory
若编译遇到此问题,可以查看环境是否libcurl库 yum list installed | grep libcurl 发现未安装libcurl库 执行libcurl库的安装命令: 1.对于Debian/Ubuntu系统: sudo apt-get install libcurl4-openssl-dev 2.对于RHEL/CentOS系统…...
【Linux】自定义协议+序列化+反序列化
自定义协议序列化反序列化 1.再谈 "协议"2.Cal TCP服务端2.Cal TCP客户端4.Json 喜欢的点赞,收藏,关注一下把! 1.再谈 “协议” 协议是一种 “约定”。在前面我们说过父亲和儿子约定打电话的例子,不过这是感性的认识&a…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
