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]+:匹配一个或多个字母。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/764197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Doris的3种数据模型详解和数据仓库每一层的模型选用

Apache Doris是一个用于离线数据仓库开发的分布式SQL查询和分析引擎。在使用Doris进行离线数据仓库开发时,可以采用三种不同的数据模型:Duplicate模型、Aggregate模型和Unique模型。每种模型都有其适用的场景和特点,同时也对于不同层次的数据仓库有着不同的使用建议。 Dupl…

Python爬虫入门教程:从零开始学习网络数据采集(零基础入门,小白看的懂)

随着互联网的快速发展,数据成为了信息时代的核心。而网络爬虫(Web Scraper)作为一种自动化采集网络数据的工具,在数据获取和分析领域发挥着重要作用。Python作为一种简单易学、功能丰富的编程语言,被广泛用于编写网络爬…

HarmonyOS实战开发-编写一个分布式邮件系统

概述 本篇Codelab是基于TS扩展的声明式开发范式编程语言编写的一个分布式邮件系统,可以由一台设备拉起另一台设备,每次改动邮件内容,都会同步更新两台设备的信息。效果图如下: 说明: 本示例涉及使用系统接口&#xff…

深度学习之分层时间记忆(Hierarchical Temporal Memory,HTM)附代码解析

介绍 分层时间记忆(Hierarchical Temporal Memory,HTM)是一种基于神经科学原理的机器学习模型,用于处理时间序列数据,它模拟了大脑皮层中的一些关键特征。HTM模型由Numenta公司的研究人员Jeff Hawkins等人提出,旨在模拟大脑皮层的工作原理。 HTM模型的核心概念是将信息…

【数据结构】——排序之冒泡排序

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

视频讲解|基于非对称纳什谈判的多微网电能共享运行优化策略

1 主要内容 该讲解视频对应的程序链接为基于非对称纳什谈判的多微网电能共享运行优化策略_吴锦领,主要内容是对《基于非对称纳什谈判的多微网电能共享运行优化策略》的matlab复现,解决的是微网间基于非对称纳什谈判的P2P电能交易共享问题,基…

SpringBoot接口防止重复提交(AOP+Redis)

方法一: 若依框架的实现 【具体靠请求地址URL参数列表来判断请求是否重复】 SpingBoot接口防止重复提交_springboot接口防抖(防重复提交)的一些实现方案-CSDN博客文章浏览阅读518次。3.根据缓存键获取缓存中对象,如果存在,判断当前请求参…

利用scipy求解方程组、拟合直线、圆、椭圆、抛物线

scipy.optimize作为优化模块可以实现任意曲线拟合,方程求根、非线性方程组求解、自定义代价函数求解等功能,下面给出了optimize中常用的几个子模块: minimize:需要自己构建代价函数(有时也称损失函数,目标函…

MATLAB中的数学建模:基础知识、实例与方法论

前言 在当今科技高速发展的时代,数学建模成为了解析复杂世界的关键工具,而MATLAB作为一种专业的科学计算软件,为我们提供了强大的数学建模平台。MATLAB不仅仅是Matrix Laboratory的简称,更是一个集数值分析、矩阵计算、算法开发和…

【C#】C#踩坑三角函数之uvw平台

背景 最近再弄一个uvw平台,uvw平台厂商会提供一个公式里面用到了三角函数: 踩坑记录 一开始,我以为Math.Cos参数是度数,所以怎么算都不对! 一度怀疑C#的Math库。 后面才意识到,这个参数会不会是弧度?结…

携程20240320java暑假实习面经

1. 自我介绍 2. 多久开始学java的 3. ConcurrentHashMap 怎么保证线程安全 1.7 与 1.8 4. 讲一讲你对线程池的理解, 并讲一讲使用的场景 5. 单例模式 如何线程安全 6. 有哪些垃圾回收器 选一个讲一下垃圾回收的流程 7. 讲一讲mysql 的索引 , 如…

我的电脑win11系统安装了谷歌浏览器,桌面的快捷方式打不开

安装好浏览器以后双击打不开右键打开文件位置也弹窗报错提示 但是我发现开始栏里面可以打开 说明我的软件应该是没有问题的,研究了一下 我实际的安装目录在:C:\Program Files\Google\Chrome\Application 桌面的快捷方式右键查看属性显示的地址却不对&a…

什么是单点登录?

单点登录(Single Sign On,简称 SSO)简单来说就是用户只需在一处登录,不用在其他多系统环境下重复登录。用户的一次登录就能得到其他所有系统的信任。 为什么需要单点登录 单点登录在大型网站应用频繁,比如阿里旗下有淘…

JavaEE 初阶篇-深入了解进程与线程(常见的面试题:进程与线程的区别)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 进程概述 2.0 线程概述 2.1 多线程概述 3.0 常见的面试题:谈谈进程与线程的区别 4.0 Java 实现多线程的常见方法 4.1 实现多线程方法 - 继承 Thread 类…

理解文件操作

1. 为什么使⽤⽂件? 如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化…

Visual Studio 插件 AnAPI++ for VS 2022

Anmial API abbreviation AnAPIis an automatically generated WebAPI project that has encapsulated Jwt Oauth2 token authentication, SqlSugar, Swagger, Nlog, Cross domain technologies, and supports Net6 and above versions Anmial API缩写AnAPI是一个自动生成的Web…

基于SpringBoot和HeatMap的全球地震热力图可视化实践

目录 前言 一、关于热力图 1、HeatMap简介 2、属性和方法介绍 二、全球地震热力图反演 1、地震信息查询开发 2、前端地图开发 三、地震带反演成果 1、三大地震带反演 2、地震区域分析 总结 前言 众所周知,全球的地震带主要可以分为三处地震带——环太平洋地…

60、服务攻防——中间件安全CVE复现weblogicJenkinsGlassFish

文章目录 weblogicJbossJenkinsGlassFish weblogic 默认端口:7001,历史漏洞:CVE_2017_3506、CVE_2018_2893、CVE_2018_3245、CVE_2020_14882、CVE_2021_2394 Jboss 历史漏洞:CVE-2017-12149、CVE-2017-7504 Jenkins GlassFis…

C#使用ASP.NET Core Razor Pages构建网站(三)

上一篇文章了解Razor Pages 链接:C#使用ASP.NET Core Razor Pages构建网站(二) 接下来继续了解ASP.NET Core Razor Pages构建网站的后续内容 一、将Entity Framework Core配置为服务 要在 ASP.NET Core 项目中配置 Entity Framework Core 服…

使用jupyter-Python进行模拟股票分析

tushare财经数据接口包 pip install tushare作用:提供相关指定的财经数据 需求:股票分析 使用tushare包获取某股票的历史行情数据 输出该股票所有收盘比开盘上涨3%以上的日期 输出该股票所有开盘比前日收盘跌幅超过2%的日期 假如我从2015年1月1日开…