Python 正则表达式方法 rematch() 和 resub()

python 正则表达式方法 rematch() 和 resub()

介绍

让我们通过示例来了解一下 python re 模块中的两个方法 re.sub() 和 re.match()。

1. re.sub():

re.sub() 函数用于替换字符串中模式的出现。它需要三个主要参数:

您要替换的模式(正则表达式)。替换字符串(您想要替换的字符串)。要替换其中出现的模式的原始字符串。

语法

re.sub(pattern, replacement, string, count=0, flags=0)

模式:要搜索的正则表达式模式。replacement: 替换匹配模式的字符串。string:将发生替换的输入字符串。count:(可选)限制替换次数。默认情况下,所有出现的地方都会被替换。flags:(可选)允许修改匹配行为(例如不区分大小写)。

示例

让我们用单词 num 替换字符串中的所有数字。

import retext = "the price is 123 dollars and 45 cents."new_text = re.sub(r'd+', 'num', text)print(new_text)

输出:

the price is num dollars and num cents.

这里,d+ 是匹配一个或多个数字的正则表达式模式。 re.sub() 函数用字符串“num”替换此模式的所有出现。

2. re.match():

re.match() 函数仅检查字符串开头的匹配。如果在字符串的开头找到匹配项,则返回一个匹配对象。否则,它返回 none。

立即学习“Python免费学习笔记(深入)”;

语法

re.match(pattern, string, flags=0)

模式:要匹配的正则表达式模式。string:要搜索的输入字符串。flags:(可选)允许修改匹配行为。

示例

让我们检查一个字符串是否以单词开头,后跟数字。

import retext = "price123 is the total cost."match = re.match(r'w+d+', text)if match:    print(f"matched: {match.group()}")else:    print("no match found")

输出:

matched: price123

这里,w+匹配一个或多个单词字符(字母、数字和下划线),d+匹配一个或多个数字。由于字符串以“price123”开头,因此成功匹配并打印它。

主要区别:

re.sub() 用于替换,适用于整个字符串。re.match() 检查字符串 是否以匹配的 开头,并且不会搜索超出字符串中第一个匹配项的内容。

您想要更多示例或更深入地了解正则表达式吗?

让我们通过更高级的示例和正则表达式 (regex) 模式的解释来更深入地了解 re.sub() 和 re.match()。

re.sub() 高级示例

假设我们想通过替换电话号码的格式来格式化电话号码。我们有 123-456-7890 等电话号码,我们希望将其替换为 (123) 456-7890 等格式。

示例

import retext = "contact me at 123-456-7890 or 987-654-3210."formatted_text = re.sub(r'(d{3})-(d{3})-(d{4})', r'(1) 2-3', text)print(formatted_text)

说明

d{3}:这正好匹配 3 位数字。(d{3}):括号 () 用于捕获组。在本例中,我们将前三位数字作为一组进行捕获。r'(1) 2-3’:这是替换字符串。它使用 1、2 和 3 来指代捕获的组(分别是区号、前三位数字和后四位数字)。因此,此示例查找 123-456-7890 格式的电话号码,并将其转换为 (123) 456-7890。

输出:

contact me at (123) 456-7890 or (987) 654-3210.

re.match() 高级示例

现在让我们看看如何将 re.match() 与更复杂的模式一起使用。假设您想要验证给定字符串是否是有效的电子邮件地址,但我们只想检查它是否以电子邮件格式开头。

示例

import reemail = "someone@example.com sent you a message."# basic email pattern matching the start of a stringpattern = r'^[a-za-z0-9_.+-]+@[a-za-z0-9-]+.[a-za-z0-9-.]+'match = re.match(pattern, email)if match:    print(f"valid email found: {match.group()}")else:    print("no valid email at the start")

说明

^[a-za-z0-9_.+-]+:此部分匹配一个或多个字母数字字符、点 (.)、下划线 (_)、加号 (+) 或连字符 (-)。 ^ 确保匹配从字符串的开头开始。@[a-za-z0-9-]+:匹配 @ 符号后跟一个或多个字母数字字符或连字符(域名)。.[a-za-z0-9-.]+:匹配点 (.) 后跟字母数字字符、连字符或其他点(顶级域)。

此模式将匹配字符串开头的有效电子邮件地址。

输出:

valid email found: someone@example.com

解释常见的正则表达式模式

d:匹配任意数字(相当于[0-9])。w:匹配任何单词字符(字母数字加下划线)。相当于[a-za-z0-9_]。+:匹配前面的字符或组出现 1 次或多次。*:匹配前面的字符或组出现 0 次或多次。.:匹配除换行符之外的任何字符。^:将模式锚定到字符串的 开头 $:将模式锚定到字符串的 结尾 {m,n}:前面的字符或组出现 m 到 n 次之间的匹配。[ ]:用于定义字符集。例如,[a-z] 匹配任意小写字母。():用于捕获组,允许我们提取匹配的部分并稍后引用它们(如 re.sub() 中)。

将 re.sub() 与函数结合

如果您想要更多动态行为,您还可以使用函数作为 re.sub() 中的替代品。让我们看看如何。

示例:将句子中的每个单词大写。

import retext = "this is a test sentence."def capitalize(match):    return match.group(0).capitalize()new_text = re.sub(r'bw+b', capitalize, text)print(new_text)

说明

b:字边界。w+:匹配一个或多个单词字符。每次匹配都会调用 capitalize() 函数,它将每个单词的第一个字母大写。

输出:

this is a test sentence.

re.match() 与 re.search()

如果你想在字符串中任何地方搜索模式(不仅仅是在开头),你应该使用re.search()而不是re.match()。

使用 re.search() 的示例

import retext = "this is my email someone@example.com"# search for an email pattern anywhere in the stringpattern = r'[a-za-z0-9_.+-]+@[a-za-z0-9-]+.[a-za-z0-9-.]+'search = re.search(pattern, text)if search:    print(f"email found: {search.group()}")else:    print("no email found")

输出:

Email found: someone@example.com

这里,re.search() 会在字符串中的任意位置查找模式,这与 re.match() 不同,re.match() 只检查开头。

概括:

re.sub():替换字符串中模式的匹配项。可以使用捕获的组进行动态替换甚至函数。re.match():检查字符串开头是否匹配。对于验证或检查字符串的开头很有用。re.search():在字符串中的任意位置搜索模式,不限于开头。

这些示例应该可以让您更全面地了解正则表达式在 python 中的工作原理!您想进一步探索任何特定模式或问题吗?

以上就是Python 正则表达式方法 rematch() 和 resub()的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1349864.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 13:45:16
下一篇 2025年12月13日 13:45:23

相关推荐

  • 使用 Python 进行网页抓取的初学者指南:最佳实践和工具

    网络抓取是在没有直接 api 可用时从网站收集数据的宝贵技能。无论您是提取产品价格、收集研究数据还是构建数据集,网络抓取都提供了无限的可能性。 在这篇文章中,我将使用 python 作为我们的主要工具,向您介绍网络抓取的基础知识、您需要的工具以及要遵循的最佳实践。 1. 什么是网页抓取? 网络抓取是…

    2025年12月13日
    000
  • 使用 Python 进行词嵌入:Wordc

    使用 python(和 gensim)实现 word2vec 注意:此代码是用 python 3.6.1 (+gensim 2.3.0) 编写的 word2vec与gensim的python实现及应用 import reimport numpy as npfrom gensim.models imp…

    2025年12月13日
    000
  • 使用 Python 进行词嵌入:docc

    使用 python(和 gensim)实现 doc2vec 注意:此代码是用 python 3.6.1 (+gensim 2.3.0) 编写的 doc2vec与gensim的python实现及应用 import reimport numpy as npfrom gensim.models impor…

    2025年12月13日
    000
  • 编写更好的 Python 代码的技巧

    您是否曾经将您的代码与经验丰富的开发人员的代码进行比较并感受到明显的差异?也许你的代码可以工作,但它看起来不像他们的那么干净或有组织。原因可能是因为经验丰富的开发人员坚持社区建立的最佳实践。这些做法在在线教程中经常被忽视,但它们对于编写高质量、可维护的代码至关重要。在本文中,我们将探讨基于这些最佳实…

    2025年12月13日
    000
  • Python 日志记录:最佳实践

    今天我们要讨论的事情就像看着油漆变干一样令人兴奋,但重要性却是它的两倍:Python 日志记录。 现在,我知道你在想什么。 “Nishant,我宁愿用叉子插在我的眼睛上,也不愿处理伐木问题。”嗯,很难,因为如果你想成为一名真正的程序员 – 你知道,那种不会花周末去寻找那个让整个开发团队发…

    2025年12月13日
    000
  • 利用 Python 实现数据输入自动化:开发人员指南

    数据输入虽然通常被认为是平凡的,但对于维护业务记录至关重要。但在自动化时代,开发人员可以在改变公司处理大量数据的方式方面发挥关键作用。 Python 拥有庞大的库生态系统,提供了强大的工具来自动执行数据输入任务,减少人为错误并提高效率。 为什么使用 Python 自动输入数据? Python 是一种…

    2025年12月13日
    000
  • 为另一个仓库做出贡献

    自本月初以来,我一直在努力学习在塞内卡理工学院学习的开源课程,我们的实验室之一是创建一个拉取请求,以便其他人的存储库并批准一个拉取请求你自己的仓库,所以这就是我要讨论的内容。 我将从我为某个问题创建的拉取请求开始。问题是添加对标志的支持,该标志允许查看请求和响应中使用了多少令牌:https://gi…

    2025年12月13日
    000
  • 好东西

    每周挑战 287 穆罕默德·s·安瓦尔 (mohammad s. anwar) 每周都会发出“每周挑战”,让我们所有人都有机会为每周两次的任务提出解决方案。我的解决方案首先用python编写,然后转换为perl。这对我们所有人来说都是练习编码的好方法。 挑战,我的解决方案 任务 1:强密码 任务 给…

    2025年12月13日
    000
  • Python 中的函数装饰器:理解 @property、Getter 和 Setter 方法

    在面向对象编程中,封装是一个基本概念,对于确保数据完整性和向用户隐藏实现细节至关重要。 python 以其简单性和可读性而闻名,它采用 getter 和 setter 作为封装的一部分。本文深入探讨了 python 中 getter 和 setter 的目的和实现,深入了解它们在管理数据访问和维护对…

    2025年12月13日
    000
  • 怎么用python爬虫做网页

    是的,可以使用 Python 爬虫爬取网页。具体步骤包括:安装 Scrapy 框架创建一个 Scrapy 项目定义需要从中提取数据的网页地址编写一个解析器来提取数据运行爬虫以收集数据存储提取的数据 如何使用 Python 爬虫爬取网页 使用 Python 爬虫爬取网页是一个获取网页内容的有效方法,用…

    2025年12月13日
    000
  • 怎么说python爬虫强大呢

    Python 爬虫的强大之处体现在以下方面:可扩展性,可轻松处理大量数据;跨平台兼容性,可在多种操作系统运行;丰富的生态系统,提供众多库和框架;易于学习,语法简单直观;多线程和异步支持,提高爬取速度;高性能,高效获取和解析网页;易于定制,满足特定需求;社区支持,提供丰富资源和支持。 Python 爬…

    2025年12月13日
    000
  • python爬虫怎么导入bs4

    要导入 BeautifulSoup4,请遵循以下步骤:使用 pip 进行安装:pip install beautifulsoup4导入 bs4 模块:from bs4 import BeautifulSoup创建 BeautifulSoup 对象:soup = BeautifulSoup(html_…

    2025年12月13日
    000
  • python爬虫怎么构建代理池

    构建 Python 代理池可通过以下步骤:收集代理,验证可用性,管理代理池,轮询代理,更新代理池,监控代理池。以确保爬虫绕过反爬机制,提升爬虫效率。 Python构建代理池 构建有效的代理池对于爬虫任务至关重要,因为它可以绕过网站反爬或提升爬虫效率。在Python中构建代理池的方法如下: 一、收集代…

    2025年12月13日
    000
  • 使用 Python 抓取佐治亚州亚特兰大律师数据的技术指南

    在本指南中,我们将探讨如何使用 python 从法律网站上抓取律师数据,重点关注佐治亚州亚特兰大的律师。这些信息对于那些想要寻找律师、研究律师事务所或收集附近律师数据的人来说非常有价值。我们将使用流行的 python 库创建一个强大的抓取工具,可以帮助您收集亚特兰大地区律师的信息。 先决条件在我们开…

    2025年12月13日
    000
  • 自学 Python 并找到梦想工作的最佳方式

    如果您决心在科技领域找到梦想的工作,学习 Python 是实现这一目标的最有效方法之一。 Python的多功能性和易学性使其成为想要进入该行业的自学者的首选。但自学 Python 的最佳方法是什么?面对如此多的可用资源和策略,选择正确的方法可能会让人感到不知所措。 本指南将引导您了解自学 Pytho…

    2025年12月13日
    000
  • PSD 批量编辑器

    大家好!我正在分享我在过去几个月开发的这个新软件。 我希望它可以帮助一些人,并且有些人可能有兴趣帮助我改进它。我想添加很多功能,请随时告诉我您希望在软件中看到什么。 在技术方面,我开始这个项目是为了尝试在我的代码中实现一些设计模式,并更好地构建架构。这也是我第一次使用QT(我在过去的GUI项目中使用…

    2025年12月13日
    000
  • 使用 Python 自动发送生日电子邮件

    在科技时代,自动化已成为一项基本技能,使我们能够简化重复性任务并提高生产力。自动化真正发挥作用的一个领域是电子邮件管理。作为一名渴望提高技能的 python 学习者,我最近开始了一个自动化生日电子邮件的项目。这个项目不仅为我提供了实践经验,还加强了python在日常任务中的实际应用。 灵感 这个项目…

    2025年12月13日
    000
  • 在 Windows 上使用 WSL2 将 Polars 与 NVIDIA GPU (CUDA) 结合使用

    首先,如果我错过了什么,或者做错了什么,或者如果您有疑问 ,请告诉我 步骤 wsl2 通过 window 商店安装任何 linux 发行版(例如 ubuntu 22.04)启动并创建用户通过在命令提示符或 powershell(在 windows 设备上)中运行此命令将 wsl 版本 2 设置为默认…

    2025年12月13日
    000
  • HandyHub – 您的首选商人目录

    HandyHub:将客户与可靠的商人联系起来 项目目的 HandyHub 旨在弥合客户与所在领域熟练商人之间的差距。我们的目标是简化寻找和雇用技工的流程,使客户更容易通过用户友好的平台获得管道、电气工作和维修等基本服务。 团队成员、角色和时间表 HandyHub项目是ALX SE计划最终项目的一部分…

    2025年12月13日
    000
  • 首次合作!

    在本周的实验中,我们的任务是通过 GitHub 为其他人的工作做出贡献。我们需要做的是在他们的项目中添加一个输出代币信息的新功能,并且我们需要使用命令行标志来触发该功能。 她的项目正在使用 OpenAI 为源代码创建自述文件。 第一个想法。 关于合作另一项工作,我的第一个想法是我需要学习他们的编码风…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信