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

re模块,匹配字符,字符替换

编辑本随笔常用表达式规则:.默认匹配除\n之外的任意一个字符,一个点代表一个字符,指定flagDOTALL则匹配任意字符,包括换行^匹配字符串开头,若指定flagMULTILINE

编辑本随笔

常用表达式规则:

.默认匹配除\n之外的任意一个字符,一个点代表一个字符,指定flag DOTA L L则匹配任意字符,包括换行
^

匹配字符串开头,若指定flag MULTILINE忽略换行符,也可匹配上(r’^a’,’\nabc\ndef’)

re.starch(‘^a’,’abcd’)等效re.match(‘a’,’abcd’)

$

匹配字符串结尾,指定flag MULTILINE,也可匹配re.search(‘a.$’,’a1\na2\na3\n)

re.match(‘a$’,’a’)只能匹配a,即以a开头并以a结尾,同一个a,也就只能匹配一个a

*匹配*号前一个字符0至多次,re.search(‘a*’,’#bb#a’)匹配到’#’
+匹配+号前一个字符1至多次,re.search(‘ba+’,bbbbbabab’)匹配到’baba’
?匹配?号前一个字符0或1次,re.search(‘ba?’,’absba’)匹配到’ba’
{m}匹配前一个字符m次,re.seatch(‘b{3}’,’ddd#bbbb’)匹配到’bbb’
{n,m}匹配前一个字符n到m次,re.findall(‘ab{1,2}’,’ababvab’)匹配到[‘abab’,’ab’],先匹配m个,m个配匹完后再匹配m-1个,直到m=n。即先最大化匹配
|匹配|号左或右的字符,re.search(‘abc|Cd’,’abcdef’)匹配到’abc’,’abCd’则匹配到Cd,要配匹到abcd或abCd则写成abcd|abCd,也可写成’ab[c|C]d’
(….)分组匹配,re.search(“(abc){2}a(123|45)”,”abcabca456c”).group()则配匹abcabca45或abcabca1245,用groups()则返回(‘abc’, ’45’)
[0-9]b表示0-9任意数字,[a-b],[A-B]
  
 \A 只从字符开头匹配,同^,类似match
 \Z 匹配字符串结尾,同$
 \ds数字0-9,同[0-9] ,\d+配匹贪婪匹配,即匹配最多如re.search(‘\d+’,’123sdf’)配匹到123而非1
 \D 配匹非数字
 \w 匹配[0-9A-Za-z],即除特殊字符
 \W 匹配非[0-9A-Za-z],即特殊字符
 \s 匹配配匹空白字符,\t,\n,\r
 (?P) 分组匹配,分组并指定名称返回re.search(“(?P[0-9]{4})(?P\d{3})”,’1236527′).group()返回1236527,groups()返回(‘1236’, ‘527’),groupdict()返回字典{‘province’: ‘1236’, ‘city’: ‘527’}

re匹配语法:

  • re.match从头开始匹配,第一个值开始匹配,只匹配一次,返回一对象,对象可用group()取值
  • re.search全局匹配,找到就返回,只匹配一次。返回一对象,对象可用group()取值
  • re.findall全局匹配,把所有匹配到的字符放到一个列表中返回

例:





  1. s= '123abc1234def'

  2. match_res=re.match( '[0-9]',s)

  3. if match_res:

  4. print(match_res.group())




  • re.split以匹配到的字符当作列表分隔符

例:

s='a123b456c789ddd#sdf-fsd'
print(re.split('\d+|#|-',s,maxsplit=None))
#maxsplit指定split多少次

《re模块,匹配字符,字符替换》

  • re.sub匹配字符并替换

例:





  1. s= 'a123b456c789ddd#sdf-fsd'

  2. print(re.sub( '\d+', '__',s))




《re模块,匹配字符,字符替换》

例:提换指定个数





  1. s= 'a123b456c789ddd#sdf-fsd'

  2. #只替换一个

  3. print(re.sub( '\d+', '__',s,count= 1))




《re模块,匹配字符,字符替换》

  • re.fullmatch全部匹配,整个字符串配匹成功就返回re object,否则返回None

re.fullmatch('\w+@\w+\.(com|cn|edu)',"huangya@163.com").group()


《re模块,匹配字符,字符替换》

  • re.compile先将规则进行编译,再用对象去配匹。对于同一个规则匹配多次,速度会提高

例:





  1. pattern=re.compile( '\w+@\w+\.(com|cn|edu)')

  2. pattern.fullmatch( 'huangya@163.com').group()




《re模块,匹配字符,字符替换》

标识符

  • re.I(re.IGNORECASE)忽略大小写
  • re.M(MULTILINE)多行模式,改变’^’和’$’的行为
  • re.S(DOTALL)改变’.’的行为,匹配包括换行符
  • re.X(VERBOSE)可以给你的表达式写注释,使其更可读

练习

《re模块,匹配字符,字符替换》

转:https://www.cnblogs.com/yaya625202/p/8683495.html

,

编辑本随笔

常用表达式规则:

.默认匹配除\n之外的任意一个字符,一个点代表一个字符,指定flag DOTA L L则匹配任意字符,包括换行
^

匹配字符串开头,若指定flag MULTILINE忽略换行符,也可匹配上(r’^a’,’\nabc\ndef’)

re.starch(‘^a’,’abcd’)等效re.match(‘a’,’abcd’)

$

匹配字符串结尾,指定flag MULTILINE,也可匹配re.search(‘a.$’,’a1\na2\na3\n)

re.match(‘a$’,’a’)只能匹配a,即以a开头并以a结尾,同一个a,也就只能匹配一个a

*匹配*号前一个字符0至多次,re.search(‘a*’,’#bb#a’)匹配到’#’
+匹配+号前一个字符1至多次,re.search(‘ba+’,bbbbbabab’)匹配到’baba’
?匹配?号前一个字符0或1次,re.search(‘ba?’,’absba’)匹配到’ba’
{m}匹配前一个字符m次,re.seatch(‘b{3}’,’ddd#bbbb’)匹配到’bbb’
{n,m}匹配前一个字符n到m次,re.findall(‘ab{1,2}’,’ababvab’)匹配到[‘abab’,’ab’],先匹配m个,m个配匹完后再匹配m-1个,直到m=n。即先最大化匹配
|匹配|号左或右的字符,re.search(‘abc|Cd’,’abcdef’)匹配到’abc’,’abCd’则匹配到Cd,要配匹到abcd或abCd则写成abcd|abCd,也可写成’ab[c|C]d’
(….)分组匹配,re.search(“(abc){2}a(123|45)”,”abcabca456c”).group()则配匹abcabca45或abcabca1245,用groups()则返回(‘abc’, ’45’)
[0-9]b表示0-9任意数字,[a-b],[A-B]
  
 \A 只从字符开头匹配,同^,类似match
 \Z 匹配字符串结尾,同$
 \ds数字0-9,同[0-9] ,\d+配匹贪婪匹配,即匹配最多如re.search(‘\d+’,’123sdf’)配匹到123而非1
 \D 配匹非数字
 \w 匹配[0-9A-Za-z],即除特殊字符
 \W 匹配非[0-9A-Za-z],即特殊字符
 \s 匹配配匹空白字符,\t,\n,\r
 (?P) 分组匹配,分组并指定名称返回re.search(“(?P[0-9]{4})(?P\d{3})”,’1236527′).group()返回1236527,groups()返回(‘1236’, ‘527’),groupdict()返回字典{‘province’: ‘1236’, ‘city’: ‘527’}

re匹配语法:

  • re.match从头开始匹配,第一个值开始匹配,只匹配一次,返回一对象,对象可用group()取值
  • re.search全局匹配,找到就返回,只匹配一次。返回一对象,对象可用group()取值
  • re.findall全局匹配,把所有匹配到的字符放到一个列表中返回

例:





  1. s= '123abc1234def'


  2. match_res=re.match( '[0-9]',s)


  3. if match_res:


  4. print(match_res.group())



  • re.split以匹配到的字符当作列表分隔符

例:

s='a123b456c789ddd#sdf-fsd'
print(re.split('\d+|#|-',s,maxsplit=None))
#maxsplit指定split多少次

《re模块,匹配字符,字符替换》

  • re.sub匹配字符并替换

例:





  1. s= 'a123b456c789ddd#sdf-fsd'


  2. print(re.sub( '\d+', '__',s))



《re模块,匹配字符,字符替换》

例:提换指定个数





  1. s= 'a123b456c789ddd#sdf-fsd'


  2. #只替换一个


  3. print(re.sub( '\d+', '__',s,count= 1))



《re模块,匹配字符,字符替换》

  • re.fullmatch全部匹配,整个字符串配匹成功就返回re object,否则返回None

re.fullmatch('\w+@\w+\.(com|cn|edu)',"huangya@163.com").group()


《re模块,匹配字符,字符替换》

  • re.compile先将规则进行编译,再用对象去配匹。对于同一个规则匹配多次,速度会提高

例:





  1. pattern=re.compile( '\w+@\w+\.(com|cn|edu)')


  2. pattern.fullmatch( 'huangya@163.com').group()



《re模块,匹配字符,字符替换》

标识符

  • re.I(re.IGNORECASE)忽略大小写
  • re.M(MULTILINE)多行模式,改变’^’和’$’的行为
  • re.S(DOTALL)改变’.’的行为,匹配包括换行符
  • re.X(VERBOSE)可以给你的表达式写注释,使其更可读

练习

《re模块,匹配字符,字符替换》

转:https://www.cnblogs.com/yaya625202/p/8683495.html


推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • switch语句的一些用法及注意事项
    本文介绍了使用switch语句时的一些用法和注意事项,包括如何实现"fall through"、default语句的作用、在case语句中定义变量时可能出现的问题以及解决方法。同时也提到了C#严格控制switch分支不允许贯穿的规定。通过本文的介绍,读者可以更好地理解和使用switch语句。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 本文详细介绍了Python中正则表达式和re模块的使用方法。首先解释了转义符的作用,以及如何在字符串中包含特殊字符。然后介绍了re模块的功能和常用方法。通过学习本文,读者可以掌握正则表达式的基本概念和使用技巧,进一步提高Python编程能力。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • 实现一个通讯录系统,可添加、删除、修改、查找、显示、清空、排序通讯录信息
    本文介绍了如何实现一个通讯录系统,该系统可以实现添加、删除、修改、查找、显示、清空、排序通讯录信息的功能。通过定义结构体LINK和PEOPLE来存储通讯录信息,使用相关函数来实现各项功能。详细介绍了每个功能的实现方法。 ... [详细]
  • java drools5_Java Drools5.1 规则流基础【示例】(中)
    五、规则文件及规则流EduInfoRule.drl:packagemyrules;importsample.Employ;ruleBachelorruleflow-group ... [详细]
author-avatar
mobiledu2502925915
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有