Python 正则表达式应用总结,如何找出全部匹配文本

chatgpt赋能python:Python完全匹配——入门指南 本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。 阅读详情


正则表达式介绍

正则表达式用于在字符串文本中匹配所要搜索的字符串样式,比如验证用户输入的邮箱格式是否正确,IP地址格式是否有误以及查找字符串中所有的网址等等…

注意,正则表达式是对文本格式的一种概括语法,其不局限于Python语言,只要是支持正则表达式的语言都可以用应用


一、正则表达式语法规则

正则表达式详细的语法可以百度或者参考菜鸟教程正则表达式
练习正则表达式语法可以参考菜鸟正则表达式在线测试器里面同时有一些常见的格式如身份证、IP等等现成的格式可套用。

篇幅较多本文在此不再复述

二、Python中应用正则表达式

1.导入re标准库

re是python用于支持正则表达式的标准库
常用的函数及语法如下:

  1. re.compile() 用于通过正则表达式语法创建正则表达式对象以方便后续调用
#示例
import re
Tmpre1=re.compile(r'2(5[0-5]|4\d)|1?\d{1,2}')
  1. re.match() 用于从文本开始查找匹配的文本内容,如果没有找到则返回None
import re
str1 = '241.255.2.30'
str2 = '...241.255.2.30'
Tmpre1=re.compile(r'2(5[0-5]|4\d)|1?\d{1,2}')
Tmpre2=re.compile(r'2(5[0-5]|4\d)|1?\d{1,2}')
print(Tmpre1.match(str1))
print(Tmpre1.match(str2))

输出如下:

<re.Match object; span=(0, 3), match='241'>
None
  1. re.search() 用于人文本中搜索第一个匹配的文本,并返回找到的第一个文本的内容,如果没有找到则返回None
#示例:
import re

str1 = '...241.255.2.30'
re4=re.compile(r'2(5[0-5]|4\d)|1?\d{1,2}')
re5=re.compile(r'25[0-5]|24\d|1?\d{1,2}')
print(re4.search(str1,3))
print('{:20}{}'.format('March',re4.search(str1)))
print('{:20}{}'.format('March.group()',re4.search(str1).group()))#返回一个或者多个匹配的子组。如果只有一个参数,结果就是一个字符串,如果有多个参数,结果就是一个元组(每个参数对应一个项),如果没有参数,组1默认到0(整个匹配都被返回)
print('{:20}{}'.format('March.startpos',re4.search(str1).start()))
print('{:20}{}'.format('March.end()',re4.search(str1).end()))#返回 group 匹配到的字串的开始和结束标号。group 默认为0(意思是整个匹配的子串)。如果 group 存在,但未产生匹配,就返回 -1 
print('{:20}{}'.format('March.endpos',re4.search(str1).endpos))#这个是正则引擎停止在字符串搜索一个匹配的索引位置。
print('{:20}{}'.format('March.re',re4.search(str1).re))#返回产生这个实例的 正则对象 
print('{:20}{}'.format('March.pos',re4.search(str1).pos))#这个是正则引擎开始在字符串搜索一个匹配的索引位置。
print('{:20}{}'.format('March.regs',re4.search(str1).regs))
print('{:20}{}'.format('March.string',re4.search(str1).string))#输出所要搜索的字符串
print('{:20}{}'.format('March.findall',re4.findall(str1)))
print('{:20}{}'.format('March.findall',re5.findall(str1)))

输出如下:

<re.Match object; span=(3, 6), match='241'>
March               <re.Match object; span=(3, 6), match='241'>
March.group()       241
March.end()         6
March.start()       3
March.endpos        15
March.re            re.compile('2(5[0-5]|4\\d)|1?\\d{1,2}')
March.pos           0
March.regs          ((3, 6), (4, 6))
March.string        ...241.255.2.30
March.findall       ['41', '55', '', '']
March.findall       ['241', '255', '2', '30']

注意上面示例中re.findall()当匹配带括号和不带括号的正则表达式的时候输出值的不同:

  • 当正则表达式带括号时,findall()返回的值只是包含在括号之内的数值
  • 当正则表达 式不带括号时,findall()返回的值是正则表达式所所找到的所有的匹配值

2.如何找到所有匹配正则表达式的文本?

无论是re,match()或者re.search()都只能搜索到一个字符结果即返回,那么如何将一段字符串中的所有文本都找出来并返回呢?
没有直接的方法,但我们可以通过调用search()函数自己做个函数来实现

Pattern.search(string[, pos[, endpos]]) 扫描整个 string 寻找第一个匹配的位置,
并返回一个相应的 匹配对象。如果没有匹配,就返回 None ;注意它和零长度匹配是不同的。

通过在search()中设置每次搜索的开始位置,让search()遍历整个文本串即可完成整个文本的搜索

代码实现:

import re

def ReFind(str1,march,start=0):
    """Search all the string find out all the text which fullfill the re

    Args:
        str1 (string): the string which going to be search
        march (Match type of the re.compile()): your re.compile()type
        start (int, optional): start position of the string . Defaults to 0.

    Returns:
        string: all the text which founded
    """    
    TmpResut = ''
    startPos=0
    try:
        TmpResut = march.search(str1,start).group()
        startPos = march.search(str1,start).end()
        if startPos<len(str1):
            TmpResut += ','+ReFind(str1,march,startPos)
            return TmpResut
        else:
            return TmpResut    
    except :
        print('re Error expected')

输出如下:

241,255,2,30

Python re模块常用的几种正则表达式方式

import re

# 正则表达式match用法,其会从字符串开头进行匹配,如果不匹配则返回None,反之找到一个匹配后需要调用group()来获取找到的值
print("re.match is: {}".format(re.match(r"\w", "hf").group()))
print("re.match is: {}".format(re.match(r"\w", "<hf").group()) if re.match(r"\w", "<hf") is not None else "No value")
# search 会在字符串中从前向后寻找,直到找到一个匹配值,如果不匹配则返回None,反之找到一个匹配后需要调用group()来获取找到的值
print("re.search is: {}".format(re.search(r"(h|f|\d+s)", "<hf10s").group()))
# findall用于寻找字符串中所有非重复的匹配项并返回一个列表或元组形式的结果
print("re.findall is: {}".format(re.findall(r"(h|f|\d+s)", "<hf10s")))
# finditer用于寻找字符串中所有非重复的匹配项并返回一个迭代器,迭代器以match类型返回
for m_findall in re.finditer(r"(h|f|\d+s)", "<hf10s"):
    print("find all value is: {}".format(m_findall.group()))

输出结果:
re.match is: h
No value
re.search is: h
re.findall is: [‘h’, ‘f’, ‘10s’]
find all value is: h
find all value is: f
find all value is: 10s


总结

Python 通过re标准库来实现正则表达式匹配 正常情况下re.search()比re.match()要方便些
通过re.group()来获取相应的结果,但group结果也要根据所要搜索的参数返回整个字符串或者元组
通过re.start()和re.end()来获取正则匹配结果的开始位置及结束位置

Python 文本匹配关键词,多个关键词从文本中匹配,疾病关键词匹配,.findall () .match() .search()的区别和应用实例,医学文本关键词检索 阅读详情

相关推荐

使用Python正则表达式进行文本匹配

本文介绍了如何使用 Python 正则表达式进行文本匹配,从基本的字符串匹配到复杂的模式匹配,再到实际的应用案例。

不许人间丶见白头 1124

Python正则表达式(持续更新,各种字符串筛选,总有一款适合您当前的功能)

一、python【re】的用法 1、re.match函数·单一匹配-推荐指数【★★】 2、re.search函数·单一匹配-推荐指数【★★★★★】 3、re.findall函数·多项匹配-推荐指数【★★★★★】 4、re.finditer函数·多项匹配-推荐指数【★★★★】 5、re.sub函数·替换函数-推荐指数【★★★★】 二、正则表达式示例·总有一款适合你 1、正则表达式匹配HTML指定id/class的标签 2、正则表达式匹配HTML中所有a标签中的各类属性值 3、获取标签的文本值

红目香薰 3万+

python正则表达式与文本匹配

python很强大 python的正则表达式很好用 这篇文章就写写怎么用python的正则表达式来匹配txt文本中的字符吧 首先,要知道自己匹配的字符串是什么形式的,然后根据自己的字符串形式来写出对应的正则表达式 例如这次,我需要匹配的是数字加逗号加数字的字符串形式 所以我的正则表达式的形式如下 rule_name = r'\b(\d*,+\d+)\s'compile_

cvb00052的博客 1万+

【从零学习python 】62. Python正则表达式:强大的字符串匹配工具

正则表达式是一种强大的字符串处理工具,可以通过定义特定的模式来匹配、查找和替换文本。Python中的re模块提供了对正则表达式的支持,包括match、search、findall和finditer等方法,它们可以灵活地实现字符串的匹配和处理。 本文详细介绍了Python中正则表达式的基本语法和常用方法,并举例说明了如何使用这些方法进行字符串匹配和替换操作。同时还介绍了原生字符串的概念,使得正则表达式的编写更加简单直观。 此外,文章还讨论了re.match和re.search的区别,以及findall和f

全栈若城,专注知识分享 5270

Python3-正则表达式-创建、匹配Regex对象

用正则表达式查找文本模式字符串中查找电话号码。只知道模式: 3个数字,一个短横线,4个数字,一个短横线,再是4个数字。例如:010-8888-8888,或010.8888.8888或(010) 8888-8888 还有分机010-8888-8888 转456 该怎么办呢?????可以创建函数,来检查字符串是否匹配模式,添加更多的代码来处理额外的模式,但还有更简单的方法。 正则表达式,简称为reg

Economic_shark的博客 6231

Python正则表达式中,findall()是一个非常实用的函数,它可以从字符串中查找匹配某个模式的所有子串,并返回一个列表

同时,在re模块中有很多其他的函数,如re.search()、re.match()等,都可以用来查找和匹配子串,但是它们和re.findall()函数之间也存在着区别。re.search()和re.match()函数只会返回第一个匹配的子串,而re.findall()函数则会返回所有匹配的子串。总结一下,re.findall()函数是一个非常实用的工具,它可以帮助我们快速的在字符串中查找和匹配子串,并返回一个列表。函数会自动遍历整个字符串,查找所有与给定模式匹配的子串,并将其保存在一个列表中返回。

m0_47037246的博客 1751

【Python爬虫实战】正则:从基础字符匹配到复杂文本处理的全面指南

正则表达式作为一种强大的文本处理工具,广泛应用于编程、文本编辑和数据处理等领域。通过定义一系列字符和符号的组合,正则表达式能够快速识别、搜索、替换和操作文本中的特定模式,极大地提高了文本处理的效率。在 Python 中,re模块提供了对正则表达式的支持,使得开发者能够轻松处理字符串中的复杂匹配问题。本篇文章将详细介绍正则表达式的基本作用、常用符号及其在 Pythonre模块中的应用,帮助读者掌握如何利用正则表达式进行高效的文本处理。re。

易辰的博客 3046

如何使用Python正则表达式匹配字符串

根据您的需求,您可以使用不同的正则表达式模式来实现更复杂的字符串匹配和处理逻辑。它会在整个字符串中查找第一个匹配的子串,并返回一个匹配对象。re.findall()函数用于获取字符串中所有与模式匹配的子串,并返回一个包含所有匹配项的列表。如果没有找到匹配的子串,则返回空列表。在上面的示例中,我们使用模式"\d+"匹配字符串中的所有连续数字。在上面的示例中,我们使用模式"\d+“匹配字符串中的所有连续数字,并将其替换为"some”。在上面的示例中,我们使用模式"\s+"将字符串按照空格进行拆分。

JieLun_C的博客 523

【Python正则表达式】深入解析正则表达式,玩转文本匹配!

正则表达式(Regular Expression,简称regex或regexp)是一种用于描述字符串模式的语法规则。它允许我们使用特殊字符和语法来定义复杂的字符串搜索模式,从而实现高效的文本匹配与处理。通过本文的深入解析,我们对Python中的正则表达式有了全面的了解。从基本的字符匹配到复杂的文本处理,正则表达式在数据验证、文本提取、格式化和网络爬虫等领域都有广泛应用。掌握正则表达式的技巧可以极大提高我们处理文本数据的效率。在实际应用中,合理使用正则表达式,可以帮助我们更快速、更准确地完成数据处理任务。

萧鼎的博客 1613

ST7789P3初始化配置

【代码】ST7789P3初始化配置。

zqq_1314的博客 4153

通信原理期末考试试题及答案

五、(总分12分)设某信道具有均匀的的双边噪声功率谱密度在该信道中传输抑制载波的单边带(上边带)信号,并设调制信号m(t)的频带限制在5K HZ,而载波为100 K HZ,已调信号的功率为10KW。:(1)单边带信号的载频为100kHz,带宽B=5kHz,为使信号顺利通过,理想带通滤波器的中心频率为。8、对最高频率为fH的调制信号m(t)分别进行AM、DSB、SSB调制,相应已调信号的带宽分别为。7、设调制信号为f(t)载波为,则抑制载波双边带调幅信号的时域表达式为,频域表达式为。

qq_67692062的博客 2394

如何使用Python正则表达式进行文本匹配?

本文介绍了如何使用 Python 正则表达式进行文本匹配,从基本的字符串匹配到复杂的模式匹配,再到实际的应用案例。希望这篇文章对你有帮助,也希望能帮到大家,因为你我都是热爱python的编程语言爱好者。

2301_78095812的博客 1952

SpringBoot实战——仿b站项目(一)

热部署就是当应用程序这种运行的时候升级冉家或者修改某一部分代码、配置文件时,无需手动启动应用,即可修改的部分生效工具 + IDEA配置。

weixin_52880572的博客 3456

精通Python正则表达式:文本处理与高效匹配的完全指南

正则表达式是Python中处理文本的强大工具,能够实现复杂的模式匹配和文本操作。通过掌握基本语法和常用命令,可以应对多种情况下的文本处理需求。在实际应用中,结合具体的场景和需求,灵活运用正则表达式能大大提高编程效率和代码的可维护性。

欢迎来到技术蜜糖罐的IT角落! 4526

手把手教你解决Windows 10网络驱动器无法访问问题(附详细排查步骤)

本文详细指导Windows 10用户解决网络驱动器无法访问的常见问题。通过从现象快速定位到系统排查,提供了从检查网络连通性、修复凭据权限到调整高级设置的完整步骤,特别是针对“找不到网络路径”等错误,帮助用户高效恢复对共享资源的访问。

weixin_29233857的博客 518

【项目案例】前后端分离项目 【Web图书管理系统 】SpringBoot + Vue + Element UI + Mysql

Web图书管理系统

激流丶的博客 5397

Python正则表达式匹配中文

Python正则表达式匹配中文

ugfffj的博客 5153

ARFoundation系列讲解 - 24 锚点

一、添加平面检测和平面可视化 请参考 ARFounnation快速入门-08平面检测 案例 二、添加射线检测 1.在AR Session Origin 组件上添加ARRaycastManager 脚本

a451319296的博客 4879

Python正则表达式:文本匹配的艺术

正则表达式是一种特殊的字符序列,用于定义搜索模式。它可以用于字符串的匹配、替换、分割和提取等操作。本文详细介绍了Python正则表达式的基本语法、常用操作和高级技巧,包括匹配、替换、分割、分组、前瞻和后顾等。通过具体的示例代码,展示了如何在实际应用中使用正则表达式进行文本匹配和处理。正则表达式是一种强大的文本处理工具,能够高效地查找、替换和处理字符串数据。掌握这些技巧,可以帮助大家在Python编程中更灵活地处理文本,提高代码的效率和可读性。

涛哥聊Python 1745

vLLM显存逆向计算:如何得到最优gpu-memory-utilization参数

本文提出了一种**逆向工程**的思路:基于vLLM显存占用的底层机制,通过精确计算模型权重、KV缓存、激活内存等各组件的显存需求,**倒推出最优的gpu-memory-utilization参数**。这种方法让我们能够在部署前就准确预估资源需求,实现一次配置、稳定运行。本文我们将从vLLM显存计算的核心原理出发,构建完整的倒推计算框架和源码,并通过大量实验验证其准确性(会有误差,但基本可以直接使用)。

羊城迷鹿的博客 1949

Docker - 基本概念、与虚拟机的区别、架构、镜像操作、容器操作、数据卷挂载

p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口(配置映射是因为用户只能通过 http 请求访问到服务器,不能直接访问到对应的容器,因此需要服务器端口与容器端口建立映射关系)这里我们有两种启动 redis 的方式,第一种是直接启动 redis ,第二种是以 AOF 持久化的方式启动容器(--appendonly yes),如下图。如果需要持续查看日志信息可以添加 -f 参数,例如:docker logs -f mn ,这里 mn 是自定义容器名称, ctrl + c 可以停止跟踪。

CYK_byte的博客 1万+

正则表达式实战:通过 Python 实现文本数据的高效匹配与替换

正则表达式是处理文本数据时的一项强大工具,能够极大地提升数据匹配与替换的效率。在 Python 中,re模块提供了许多常用的方法,帮助我们高效地进行正则表达式操作。

一名热衷于技术的全栈开发者,专注于前端与后端的全面技术探索。在这里,我将分享我在技术领域的学习与成长,助力更多开发者的进步。 1452

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Python正则匹配的应用——替换括号及括号内字符、文本分句

本文是在实际处理文本时遇到的两个应用。 1、剔除括号及括号内的数据 用正则匹配的方法,替换掉目标字符串为空,具体示例如下: s = "我是一个人(中国人)aaa[真的]bbbb{确定}" a = re.sub(r"\((.*?)\)|\{(.*?)\}|\[(.*?)\]", "", s) print(a) output: 我是一个人aaabbbb 加上剔除文本中的各种标点符号,例子如下: s = "我是一个人(中国人)aaa[真的]bbbb{确定}''""?::”“" a =...

u011412768的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

教你用Python正则表达式进行文本匹配

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、自动化测试带你从零基础系统性的学好Python!👉Python学习大礼包👈​。

2301_78096295的博客 811

如何使用Python正则表达式进行文本匹配

本文介绍了如何使用 Python 正则表达式进行文本匹配,从基本的字符串匹配到复杂的模式匹配,再到实际的应用案例。如果你正在学习Python,那么你需要的话可以,点击这里👉Python重磅福利:入门&进阶全套学习资料、电子书、软件包、项目源码等等免费分享!或扫描下方优快云官方微信二维码获娶Python入门&进阶全套学习资料、电子书、软件包、项目源码。

2301_78150559的博客 1097
上一篇: Python编程为什么要用uft-8?如何查看字符串的编码及进制转换
下一篇: Python运行poweshell指令出错故障处理
PittDing
博客等级 码龄7年 227粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值