热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python正则表达函数_Python中的正则表达式的相关函数(一)

match(pattern,string,flags0)函数只检测字符串开头位置是否匹配,匹配成功才会返回结果,否则返回Noneÿ

match(pattern,string,flags=0)函数只检测字符串开头位置是否匹配,匹配成功才会返回结果,否则返回None;fullmatch要求的是整个搜索文本与模式串全完全匹配,如果完整匹配到了正则表达式样式,就返回一个相应的 匹配对象,否则返回None。

注意:如果搜索文本能找到匹配串但比匹配模式多出更多的内容也返回None。

import re

print(re.match("func", "function"))

# 打印结果 <_sre.sre_match object span&#61;"(0," match&#61;"func">

print(re.match("func", "function").span())

# 打印结果 (0, 4)

print(re.match("func1", "function"))

# 打印结果 None

注意&#xff1a;print(re.match("func1", "function").span())会报错&#xff0c;因为取不到span

search(pattern,string,flags&#61;0)函数会在整个字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以通过调用group()方法得到匹配的字符串,如果字符串没有匹配&#xff0c;则返回None。

注意&#xff1a;group使用时分组的分组0是给match在用&#xff0c;真正生成的分组是从1开始的

import re

print(re.search("tion", "function"))

# 打印结果 <_sre.sre_match object span&#61;"(4," match&#61;"tion">

print(re.search("tion", "function").span())

# 打印结果 (4, 8)

print(re.search("tion1", "function"))

# 打印结果 None

注意&#xff1a;print(re.search("tion1", "function").span())会报错&#xff0c;因为取不到tion1

re.compile(pattern,flags&#61;0)设定flags&#xff0c;编辑模式&#xff0c;返回正则表达式对象regex。pattern就是正则表达式字符串&#xff0c;flags是选项&#xff0c;正则表达式需要被编译&#xff0c;为了提高效率&#xff0c;这些编译后的结果被保存&#xff0c;下次使用相同的pattern的时候&#xff0c;就不需要再次编译

re模块下的其他常用方法

import re

print(re.findall("a", "a aa ab ac")) # 返回所有满足匹配条件的结果,放在列表里

# [&#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;, &#39;a&#39;]

print(re.split(&#39;[ab]&#39;, &#39;abcd&#39;)) # 先按&#39;a&#39;分割得到&#39;&#39;和&#39;bcd&#39;,在对&#39;&#39;和&#39;bcd&#39;分别按&#39;b&#39;分割

# [&#39;&#39;, &#39;&#39;, &#39;cd&#39;]

ret &#61; re.sub(&#39;\d&#39;, &#39;H&#39;, &#39;eva3egon4yuan4&#39;, 1)#将数字替换成&#39;H&#39;&#xff0c;参数1表示只替换1个

print(ret) #evaHegon4yuan4

ret &#61; re.subn(&#39;\d&#39;, &#39;H&#39;, &#39;eva3egon4yuan4&#39;)#将数字替换成&#39;H&#39;&#xff0c;返回元组(替换的结果,替换了多少次)

print(ret)

obj &#61; re.compile(&#39;\d{3}&#39;) #将正则表达式编译成为一个 正则表达式对象&#xff0c;规则要匹配的是3个数字

ret &#61; obj.search(&#39;abc123eeee&#39;) #正则表达式对象调用search&#xff0c;参数为待匹配的字符串

print(ret.group()) #结果 &#xff1a; 123

import re

ret &#61; re.finditer(&#39;\d&#39;, &#39;ds3sy4784a&#39;) #finditer返回一个存放匹配结果的迭代器

print(ret) #

print(next(ret).group()) #查看第一个结果

print(next(ret).group()) #查看第二个结果

print([i.group() for i in ret]) #查看剩余的左右结果

注意&#xff1a;

1 findall的优先级查询&#xff1a;

import re

ret &#61; re.findall(&#39;www.(baidu|jd).com&#39;, &#39;www.jd.com&#39;)

print(ret) # [&#39;jd&#39;] 这是因为findall会优先把匹配结果组里内容返回,如果想要匹配结果,取消权限即可

ret &#61; re.findall(&#39;www.(?:baidu|jd).com&#39;, &#39;www.jd.com&#39;)

print(ret) # [&#39;www.jd.com&#39;]

2 split的优先级查询

ret&#61;re.split("\d&#43;","eva3egon4yuan")

print(ret) #结果 &#xff1a; [&#39;eva&#39;, &#39;egon&#39;, &#39;yuan&#39;]

ret&#61;re.split("(\d&#43;)","eva3egon4yuan")

print(ret) #结果 &#xff1a; [&#39;eva&#39;, &#39;3&#39;, &#39;egon&#39;, &#39;4&#39;, &#39;yuan&#39;]

#在匹配部分加上()之后所切出的结果是不同的&#xff0c;

#没有()的没有保留所匹配的项&#xff0c;但是有()的却能够保留了匹配的项&#xff0c;

#这个在某些需要保留匹配部分的使用过程是非常重要的。



推荐阅读
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • OO第一单元自白:简单多项式导函数的设计与bug分析
    本文介绍了作者在学习OO的第一次作业中所遇到的问题及其解决方案。作者通过建立Multinomial和Monomial两个类来实现多项式和单项式,并通过append方法将单项式组合为多项式,并在此过程中合并同类项。作者还介绍了单项式和多项式的求导方法,并解释了如何利用正则表达式提取各个单项式并进行求导。同时,作者还对自己在输入合法性判断上的不足进行了bug分析,指出了自己在处理指数情况时出现的问题,并总结了被hack的原因。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
author-avatar
mobiledu2502887381
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有