Python的re模块进行正则表达式操作时的常用方法[回顾学习]
re 模块是 Python 中用于处理正则表达式的标准库模块。通过 re 模块,可进行字符串匹配、搜索和替换等各种操作。
有几个常用的方法:
# re.match(pattern, string):从字符串开头开始匹配模式,并返回匹配对象。适合用于确定字符串是否以指定模式开头。
# re.search(pattern, string):在整个字符串中搜索匹配模式,返回第一个匹配对象。适合用于查找字符串中的某个模式。
# re.findall(pattern, string):返回所有非重叠的匹配项列表,不返回匹配对象。适合用于找到所有匹配项。
# re.finditer(pattern, string):返回一个迭代器,包含所有匹配对象,需要通过迭代来访问每个匹配对象。
# re.sub(pattern, repl, string):替换字符串中的模式匹配项为指定的替换文本。
# re.split(pattern, string):根据模式将字符串拆分为子串,返回拆分后的子串列表。
import re
# 原始字符串
text = "Hello, my email is example123@email.com"
# 定义要搜索的模式
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
# 搜索模式匹配的内容
matches = re.findall(pattern, text)
print("Emails found in the text:")
for match in matches:print(match)
# 替换匹配的内容
new_text = re.sub(pattern, "REPLACED_EMAIL", text)
print("\nAfter replacing emails:")
print(new_text)import re
text = "Today is 2024-03-22"
pattern = r"(\d{4})-(\d{2})-(\d{2})"
match = re.search(pattern, text)
if match:print("Found:", match.group()) # 所有匹配内容print("Year:", match.group(1)) # 第一个分组,即年份print("Month:", match.group(2)) # 第二个分组,即月份print("Day:", match.group(3)) # 第三个分组,即日期# Python 的 re 模块提供了一系列方法,用于处理正则表达式。以下是 re 模块中常用的方法及其用途的详细例举:
# re.search(pattern, string, flags=0):
# 用途:在字符串中搜索指定的模式。
import re
text = "The quick brown fox jumps over the lazy dog fox"
pattern = r"fox"
match = re.search(pattern, text)
if match:print("Found:", match.group())# re.match(pattern, string, flags=0):
# 用途:从字符串开头开始匹配指定的模式。re.match() 方法,您可以有效地从字符串开头匹配指定模式并提取所需的部分
import re
text = "apple orange banana"
pattern = r"apple"
match = re.match(pattern, text)
if match:print("Found:", match.group())import re
text = "2024-03-22"
pattern = r"(\d{4})-(\d{2})-(\d{2})"
match = re.match(pattern, text)
if match:print("Found:", match.group()) # 整个匹配内容print("Year:", match.group(1)) # 第一个分组,即年份print("Month:", match.group(2)) # 第二个分组,即月份print("Day:", match.group(3)) # 第三个分组,即日期# re.findall(pattern, string, flags=0):
# 用途:查找字符串中所有与模式匹配的子串,并返回一个列表。
import re
text = "The cat and the hat sat flat on the mat"
pattern = r"\b\w{3}\b" # 匹配长度为3的单词
matches = re.findall(pattern, text)
print("Matches:", matches)# re.sub(pattern, repl, string, count=0, flags=0):
# 用途:替换字符串中与模式匹配的部分。
# import re
# text = "Hello, my email is example123@email.com"
# pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
# new_text = re.sub(pattern, "REPLACED_EMAIL", text)
# print("New text:", new_text)# re.split(pattern, string, maxsplit=0, flags=0):
# 用途:根据模式将字符串分割成子串,并返回一个列表。
import re
text = "apple,orange,banana,pear"
pattern = r","
parts = re.split(pattern, text)
print("Parts:", parts)# re.finditer(pattern, string) 是 re 模块中用于在字符串中查找所有匹配项的方法。
# 它返回一个迭代器,该迭代器包含所有匹配的对象,您可以通过迭代来访问每个匹配对象并获取相关信息。
import re
text = "apple orange apple banana apple"
pattern = r"apple"
matches = re.finditer(pattern, text)
for match in matches:start_index = match.start() # 匹配起始索引end_index = match.end() # 匹配结束索引matched_text = match.group() # 匹配的文本print(f"Found '{matched_text}' at position {start_index}-{end_index}")
# Found 'apple' at position 0-5
# Found 'apple' at position 13-18
# Found 'apple' at position 26-31
使用正则表达式来匹配不同格式的电话号码,并进行格式化:
import re# 定义匹配电话号码的正则表达式
phone_numbers = ["1234567890","(123) 456-7890","123-456-7890","123.456.7890"
]# 定义电话号码的格式化函数
def format_phone_number(phone):# 使用正则表达式匹配不同格式的电话号码pattern = r"\(?(\d{3})\)?[\s.-]?(\d{3})[\s.-]?(\d{4})"match = re.match(pattern, phone)if match:# 如果匹配成功,则重新格式化电话号码formatted_number = "-".join(match.groups())return formatted_numberelse:# 如果匹配失败,则返回原始电话号码return phone# 对每个电话号码进行格式化
for phone in phone_numbers:formatted_number = format_phone_number(phone)print(formatted_number)# 123-456-7890
# 123-456-7890
# 123-456-7890
# 123-456-7890
使用正则表达式进行文本清洗,去除非字母字符:
import re# 定义需要清洗的文本
text = "This is an example text! It contains some $special$ characters & symbols 123."# 定义清洗文本的函数
def clean_text(text):# 使用正则表达式去除非字母字符cleaned_text = re.sub(r'[^a-zA-Z\s]', '', text)return cleaned_text# 对文本进行清洗
cleaned_text = clean_text(text)
print("Cleaned Text:", cleaned_text)
使用正则表达式从文本中提取出所有的邮箱地址:
import re# 定义包含邮箱地址的文本
text = "Contact us at support@example.com or feedback@test.com for any inquiries."# 定义提取邮箱地址的函数
def extract_email_addresses(text):# 使用正则表达式提取邮箱地址pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'emails = re.findall(pattern, text)return emails# 从文本中提取邮箱地址
extracted_emails = extract_email_addresses(text)
print("Extracted Emails:", extracted_emails)
使用正则表达式从文本中提取网址链接:
import re# 定义包含网址链接的文本
text = "Check out our website at https://www.example.com for more information. You can also visit us at http://example.org."# 定义提取网址链接的函数
def extract_urls(text):# 使用正则表达式提取网址链接pattern = r'https?://\S+'urls = re.findall(pattern, text)return urls# 从文本中提取网址链接
extracted_urls = extract_urls(text)
print("Extracted URLs:", extracted_urls)
使用正则表达式删除文本中的空行:
import re# 定义包含空行的文本
text = """This is some text.This is another paragraph.This is a third paragraph."""# 定义删除空行的函数
def remove_blank_lines(text):# 使用正则表达式替换连续的多个空行为一个空行cleaned_text = re.sub(r'\n\s*\n', '\n', text)return cleaned_text# 删除文本中的空行
cleaned_text = remove_blank_lines(text)
print("Cleaned Text:")
print(cleaned_text)
正则表达式(Regular Expression)是一种用于描述字符串模式的工具,可以帮助您在文本中进行搜索、匹配和替换操作。正则表达式由普通字符(例如字母、数字)和元字符(例如.、*、^)组成,通过组合这些字符来定义匹配规则。
在 Python 中,使用 re 模块可以对正则表达式进行操作。以下是一些常用的正则表达式元字符和符号:
.:匹配任意单个字符,除了换行符。^:匹配字符串的开头。$:匹配字符串的结尾。*:匹配前面的表达式零次或多次。+:匹配前面的表达式一次或多次。?:匹配前面的表达式零次或一次。\d:匹配一个数字。\w:匹配一个字母、数字或下划线。\s:匹配一个空白字符(空格、制表符等)。
示例:
a.*b:匹配以a开头,以b结尾,中间可以有任意字符的字符串。\d{3}-\d{4}:匹配电话号码格式,例如123-4567。[A-Za-z]+:匹配一个或多个字母。
相关文章:
Python的re模块进行正则表达式操作时的常用方法[回顾学习]
re 模块是 Python 中用于处理正则表达式的标准库模块。通过 re 模块,可进行字符串匹配、搜索和替换等各种操作。 有几个常用的方法:# re.match(pattern, string):从字符串开头开始匹配模式,并返回匹配对象。适合用于确定字符串是否…...
Rust之构建命令行程序(五):环境变量
开发环境 Windows 11Rust 1.77.0 VS Code 1.87.2 项目工程 这次创建了新的工程minigrep. 使用环境变量 我们将通过添加一个额外的功能来改进minigrep:一个不区分大小写的搜索选项,用户可以通过环境变量打开该选项。我们可以将此功能设置为命令行选项,…...
ARMday7
VID_20240322_203313 1.思维导图 2.main.c #include"key_inc.h" //封装延时函数 void delay(int ms) {int i,j;for(i0;i<ms;i){for(j0;j<2000;j){}} } int main() {//按键中断的初始化key1_it_config();key2_it_config();key3_it_config();while(1){printf(&q…...
Ubuntu中安装VSCode的一个指令
问题描述 本来想去VSCode官网上下载软件包,然后双击使用Ubuntu Software安装的,但是安装老不成功。 想用命令行指令dpkg进行安装,虽然能成功,但是后续使用 code . 命令打开VSCode又报错说找不到命令。 解决方式 在命令行中使用…...
生活电子产品拆解分析~汇总目录
一、锂电池电源 ①电子产品拆解分析-暖手宝 ②电子产品拆解分析-电动牙刷 ③电子产品拆解分析-充电宝台灯 ④电子产品拆解分析-太阳能自动感应灯 ⑤电子产品拆解分析-人体感应灯 ⑥电子产品拆解分析-食物电子秤 ⑦电子产品拆解分析-6600mA充电宝 ⑨电子产品拆解分析-触摸化妆镜…...
Tkinter 一文读懂
Tkinter 简介 Tkinter(即 tk interface,简称“Tk”)本质上是对 Tcl/Tk 软件包的 Python 接口封装,它是 Python 官方推荐的 GUI 工具包,属于 Python 自带的标准库模块,当您安装好 Python 后,就可…...
2核4G服务器阿里云性能测评和优惠价格表
阿里云2核4G服务器租用优惠价格,轻量2核4G服务器165元一年、u1服务器2核4G5M带宽199元一年、云服务器e实例30元3个月,活动链接 aliyunfuwuqi.com/go/aliyun 活动链接如下图: 阿里云2核4G服务器优惠价格 轻量应用服务器2核2G4M带宽、60GB高效…...
Day41:WEB攻防-ASP应用HTTP.SYS短文件文件解析Access注入数据库泄漏
目录 ASP-默认安装-MDB数据库泄漏下载 ASP-中间件-CVE&短文件&解析&写权限 HTTP.SYS(CVE-2015-1635)主要用作蓝屏破坏,跟权限不挂钩 IIS短文件(iis全版本都可能有这个问题) IIS文件解析 IIS写权限 ASP-SQL注入-SQLMAP使用…...
什么是单点登录?
单点登录(Single Sign On,简称 SSO)简单来说就是用户只需在一处登录,不用在其他多系统环境下重复登录。用户的一次登录就能得到其他所有系统的信任。 为什么需要单点登录 单点登录在大型网站应用频繁,比如阿里旗下有淘…...
elasticsearch的数据搜索
DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询:利用分词器对用户…...
云原生相关概念(小白版)
先说概念: 云原生应该是一种“建立在云上的多种效率提升技术的复合体"(而不是单一的技术创新),主要就是在云技术摆脱物理储存限制的基础上,进一步实现应用的专业优化(即文章里说的按功能切分…...
Dell戴尔XPS 12 9250二合一笔记本电脑原装出厂Windows10系统包下载
链接:https://pan.baidu.com/s/1rqUEM_q5DznF0om6eevcwg?pwdvij0 提取码:vij0 戴尔原厂WIN10系统自带所有驱动、出厂主题壁纸、系统属性专属联机支持标志、系统属性专属LOGO标志、Office办公软件、MyDell等预装程序 文件格式:esd/wim/sw…...
YOLOv5改进 | 图像去雾 | 利用图像去雾网络AOD-PONO-Net网络增改进图像物体检测(全网独家首发)
一、本文介绍 本文给大家带来的改进机制是利用AODNet图像去雾网络结合PONO机制实现二次增强,我将该网络结合YOLOv5针对图像进行去雾检测(也适用于一些模糊场景,图片不清晰的检测),同时本文的内容不影响其它的模块改进可以作为工作量凑近大家的论文里,非常的适用,图像去…...
代码随想录算法训练营Day55 ||leetCode 583. 两个字符串的删除操作 || 72. 编辑距离
583. 两个字符串的删除操作 这道题的状态方程比上一题简单一些 初始化如下 class Solution { public:int minDistance(string word1, string word2) {vector<vector<int>> dp(word1.size() 1, vector<int>(word2.size() 1));for (int i 0; i < word1…...
Hive常用函数 之 数值处理
Hive常用函数 之 数值处理 以下是Hive中常用的数值处理函数,可用于执行各种数学运算和数值转换操作。 1. ABS():返回一个数的绝对值。 SELECT ABS(-10); -- 输出: 102. ROUND():对一个数进行四舍五入。 SELECT ROUND(10.56); -- 输出: 113.…...
策略模式在项目中实际应用
Java策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。策略模式定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换。策略模式使得算法可以独立于使用它的客户端变化。在Java中实现策略模式,通常包含三个…...
没有磁盘整列下的多机分布式存储:使用rysnc+多服务器文件/文件夹内容同步
目录 0.为什么要定时同步 1.程序安装 2.文件夹设置rsync使用 3.使用cron进行定时任务 0.为什么要定时同步 作为科研党,实验室有多个服务器,但是都是分批买的没有上磁盘整列,所以一个服务器上跑的东西并不能同步,有时候挂任务要…...
SQL:窗口函数之OVER()
窗口函数 通用格式 “函数 OVER (PARTITION BY 分组 ORDER BY 排序依据 升降序)”。 这里记录下OVER() 以及搭配LEAD/LAG函数的使用方法(执行平台Impala) 目录 OVER函数1、不加条件的OVER函数——得到所有的汇总结果2、仅有排序的OVER函数——得到按顺序…...
嵌入式开发--STM32G431RBTx-定时器中断流水灯
嵌入式开发–STM32G431RBTx-定时器中断流水灯 定时器工作原理 如图有反映stm32g431的定时器资源。 共10个定时器 定时器定时器类型个数TIM6,7基本定时器2TIM2,3,4全功能通用定时器3TIM15,16,17通用定时器(只有1或2个…...
人像抠图HumanSeg——基于大规模电话会议视频数据集的连接感知人像分割
前言 人像抠图将图像中的人物与背景进行像素级别的区分的技术。通过人像分割,可以实现诸如背景虚化、弹幕穿人等各种有趣的功能,为视频通话和影音观看提供更加优质和丰富的体验。由于广泛部署到Web、手机和边缘设备,肖像分割在兼顾分割精度的…...
51单片机驱动ST7735S彩屏避坑指南:从5秒刷屏到流畅贪吃蛇的优化实战
51单片机驱动ST7735S彩屏性能优化实战:从卡顿到流畅游戏的蜕变之路当一块128x160分辨率的ST7735S彩屏遇上传统的51单片机,这种组合看似矛盾却又充满挑战。许多开发者初次尝试时会发现,原本在STM32等平台上运行流畅的显示驱动,移植…...
转行网络安全运维:从0到1的可落地指南
转行网络安全运维:从0到1的可落地指南 一、 「3个核心技能:从零起步也能会」 网上学习资料多到爆炸,不用纠结“哪个最好”,记住一句话:**能学会、能上手的就是好的**!不管是免费视频还是付费课,…...
Claude端到端测试设计:从零搭建可审计、可回放、可量化的AI服务测试流水线(含开源Schema校验工具)
更多请点击: https://codechina.net 第一章:Claude端到端测试设计 端到端测试是验证Claude模型在真实用户交互链路中行为一致性的关键手段。它覆盖从原始提示输入、上下文管理、流式响应生成,到输出解析与业务校验的全路径,确保模…...
输电线路在线监测系统|架空线路安全运行的“第一道防线“!
输电线路微气象监测站是专为高压输电线路、电网廊道、杆塔运维量身打造的专利级一体化微气象智能监测设备。依托双专利超声波探测技术、六要素集成传感架构、无启动风速高精测量、智能抗干扰稳控系统,实现输电线路沿线气象24小时全自动捕捉、动态实时监测、大风风险…...
Unlock-Music:浏览器中一键解锁加密音乐文件的完整指南
Unlock-Music:浏览器中一键解锁加密音乐文件的完整指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: http…...
从科研图表到商业报表:如何用Matplotlib的legend()提升你的图表专业度?
从科研图表到商业报表:如何用Matplotlib的legend()提升你的图表专业度? 在数据驱动的决策时代,图表不仅是科研论文中的证据载体,更是商业汇报中的说服工具。我曾见证一位生物统计学家将同一组临床试验数据呈现给三种不同受众&…...
保姆级教程:手把手教你搞定ESXi 6.7安装前的BIOS设置(VT-x/VT-d/AES全开)
从零开始:ESXi 6.7安装前的BIOS设置终极指南当你第一次接触企业级虚拟化平台时,那种既兴奋又忐忑的心情我完全理解。作为过来人,我记得自己第一次在Dell PowerEdge服务器上安装ESXi时,光是搞清楚BIOS里那些晦涩的选项就花了整整一…...
独立开发者利用taotoken模型广场为不同任务选择性价比最优模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 独立开发者利用taotoken模型广场为不同任务选择性价比最优模型 对于独立开发者而言,在有限的预算内高效完成多样化的开…...
软件测试行业的未来趋势:这3类测试将成为主流
随着数字化转型的深入推进,软件已经成为驱动各行业变革的核心生产力,从自动驾驶汽车到企业级云原生平台,从智慧医疗设备到工业互联网系统,软件的复杂度、规模和对安全性的要求都在呈指数级增长。作为软件质量保障的核心环节&#…...
10.刷机变砖、IMEI 丢失、基带未知、触控失灵?一站式终极修复方案
摘要 本文面向具备基础计算机操作能力的维修从业者与高级用户,系统讲解当前主流品牌手机(华为、小米、OPPO、vivo、一加、苹果)的刷机与维修核心流程。内容涵盖底层引导架构差异、Fastboot/Recovery/DFU模式操作规范、分区表保护策略、驱动兼容性处理以及常见硬件故障的软件…...
