范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

学Python正则表达式,这一篇就够了

  正则表达式是一个特殊的字符序列,可以帮助您使用模式中保留的专门语法来匹配或查找其他字符串或字符串集。 正则表达式在UNIX世界中被广泛使用。
  注:很多开发人员觉得正则表达式比较难以理解,主要原因是缺少使用或不愿意在这上面花时间。
  re模块在Python中提供对Perl类正则表达式的完全支持。如果在编译或使用正则表达式时发生错误,则re模块会引发异常re.error。
  在这篇文章中,将介绍两个重要的功能,用来处理正则表达式。 然而,首先是一件小事:有各种各样的字符,这些字符在正则表达式中使用时会有特殊的意义。 为了在处理正则表达式时避免混淆,我们将使用:r"expression"原始字符串。
  匹配单个字符的基本模式
  编号
  表达式
  描述
  1
  a, X, 9, <   普通字符完全匹配。   2
  .   匹配任何单个字符,除了换行符’ ‘   3
  w   匹配"单词"字符:字母或数字或下划线[a-zA-Z0-9_]。   4
  W   匹配任何非字词。   5
  b   字词与非字词之间的界限   6
  s   匹配单个空格字符 : 空格,换行符,返回,制表符   7
  S   匹配任何非空格字符。   8
  , , r   制表符,换行符,退格符   9
  d   十进制数[0-9]   10
  ^   匹配字符串的开头   11
  $   匹配字符串的末尾   12
  抑制字符的"特殊性",也叫转义字符。 编译标志   编译标志可以修改正则表达式的某些方面。标志在re模块中有两个名称:一个很长的名称,如IGNORECASE,和一个简短的单字母形式,如。   编号   标志   含义   1
  ASCII, A   像w,b,s和d之间的几个转义只匹配ASCII字符与相应的属性。   2
  DOTALL, S   匹配任何字符,包括换行符   3
  IGNORECASE, I   不区分大小写匹配   4
  LOCALE, L   做一个区域感知的匹配   5
  MULTILINE, M   多行匹配,影响^和$   6
  VERBOSE, X (for ‘extended’)   启用详细的RE,可以更干净,更容易理解   1.match函数   此函数尝试将RE模式与可选标志的字符串进行匹配。   下面是函数的语法 :re.match(pattern, string, flags = 0) 12复制代码类型:[python]   这里是参数的描述 :   pattern : 这是要匹配的正则表达式。   string : 这是字符串,它将被搜索用于匹配字符串开头的模式。 |   flags : 可以使用按位OR(|)指定不同的标志。 这些是修饰符,如下表所列。   re.match函数在成功时返回匹配对象,失败时返回None。使用match(num)或groups()函数匹配对象来获取匹配的表达式。   编号   匹配对象   描述   1
  group(num = 0)   此方法返回整个匹配(或特定子组num)   2
  groups()   此方法返回一个元组中的所有匹配子组(如果没有,则返回为None)   示例#!/usr/bin/python3 import re line = "Cats are smarter than dogs" matchObj = re.match( r"(.*) are (.*?) .*", line, re.M|re.I) if matchObj: print ("matchObj.group() : ", matchObj.group()) print ("matchObj.group(1) : ", matchObj.group(1)) print ("matchObj.group(2) : ", matchObj.group(2)) else: print ("No match!!") 1234567891011121314复制代码类型:[python]   当执行上述代码时,会产生以下结果 :matchObj.group() : Cats are smarter than dogs matchObj.group(1) : Cats matchObj.group(2) : smarter123复制代码类型:[python]   2.search函数   此函数尝试将RE模式与可选标志的字符串进行匹配。   下面是这个函数的语法 :re.match(pattern, string, flags = 0) 123复制代码类型:[python]   这里是参数的描述 :   pattern : 这是要匹配的正则表达式。   string : 这是字符串,它将被搜索用于匹配字符串开头的模式。 |   flags : 可以使用按位OR(|)指定不同的标志。 这些是修饰符,如下表所列。   re.search函数在成功时返回匹配对象,否则返回None。使用match对象的group(num)或groups()函数来获取匹配的表达式。   编号   匹配对象   描述   1
  group(num = 0)   此方法返回整个匹配(或特定子组num)   2
  groups()   此方法返回一个元组中的所有匹配子组(如果没有,则返回为None)   示例#!/usr/bin/python3 import re line = "Cats are smarter than dogs"; searchObj = re.search( r"(.*) are (.*?) .*", line, re.M|re.I) if searchObj: print ("searchObj.group() : ", searchObj.group()) print ("searchObj.group(1) : ", searchObj.group(1)) print ("searchObj.group(2) : ", searchObj.group(2)) else: print ("Nothing found!!") 1234567891011121314复制代码类型:[python]   当执行上述代码时,会产生以下结果 :matchObj.group() : Cats are smarter than dogs matchObj.group(1) : Cats matchObj.group(2) : smarter 1234复制代码类型:[python]   3.匹配与搜索   Python提供基于正则表达式的两种不同的原始操作:match检查仅匹配字符串的开头,而search检查字符串中任何位置的匹配(这是Perl默认情况下的匹配)。   示例#!/usr/bin/python3 import re line = "Cats are smarter than dogs"; matchObj = re.match( r"dogs", line, re.M|re.I) if matchObj: print ("match --> matchObj.group() : ", matchObj.group()) else: print ("No match!!") searchObj = re.search( r"dogs", line, re.M|re.I) if searchObj: print ("search --> searchObj.group() : ", searchObj.group()) else: print ("Nothing found!!") 123456789101112131415161718复制代码类型:[python]   当执行上述代码时,会产生以下结果 :No match!! search --> matchObj.group() : dogs12复制代码类型:[python]   4.搜索和替换   使用正则表达式re模块中的最重要的之一是sub。   模块re.sub(pattern, repl, string, max=0)1复制代码类型:[python]   此方法使用repl替换所有出现在RE模式的字符串,替换所有出现,除非提供max。此方法返回修改的字符串。   示例#!/usr/bin/python3 import re phone = "2018-959-559 # This is Phone Number" # Delete Python-style comments num = re.sub(r"#.*#39;, "", phone) print ("Phone Num : ", num) # Remove anything other than digits num = re.sub(r"D", "", phone) print ("Phone Num : ", num)123456789101112复制代码类型:[python]   当执行上述代码时,会产生以下结果 :Phone Num : 2018-959-559 Phone Num : 201895955912复制代码类型:[python]   5.正则表达式修饰符:选项标志   正则表达式文字可能包含一个可选修饰符,用于控制匹配的各个方面。 修饰符被指定为可选标志。可以使用异或(|)提供多个修饰符,如前所示,可以由以下之一表示 :   编号   修辞符   描述   1
  re.I   执行不区分大小写的匹配。   2
  re.L 根据当前语言环境解释单词。   这种解释影响字母组(w和W)以及字边界行为(b和B)。   3
  re.M 使$匹配一行的结尾(而不仅仅是字符串的结尾),   并使^匹配任何行的开始(而不仅仅是字符串的开头)。   4
  re.S   使一个句点(.)匹配任何字符,包括换行符。   5
  re.U 根据Unicode字符集解释字母。   此标志影响w,W,b,B的行为。   6
  re.X 允许"cuter"正则表达式语法。 它忽略空格(除了一个集合[]内部,   或者用反斜杠转义),并将未转义的#作为注释标记。   6.正则表达模式   除了控制字符(+ ? . * ^ $ ( ) [ ] { } | ),所有字符都与其自身匹配。 可以通过使用反斜杠将其转换为控制字符。   7.正则表达式示例   字符常量   编号   示例   说明   1
  python   匹配"python"。   字符类   编号   示例   说明   1
  [Pp]ython   匹配"Python"或"python"   2
  rub[ye]   匹配"ruby"或"rube"   3
  [aeiou]   匹配任何一个小写元音   4
  [0-9]   匹配任何数字; 如[0123456789]   5
  [a-z]   匹配任何小写ASCII字母   6
  [A-Z]   匹配任何大写的ASCII字母   7
  [a-zA-Z0-9]   匹配上述任何一个   8
  [^aeiou]   匹配除小写元音之外的任何东西   9
  [^0-9]   匹配数字以外的任何东西   特殊字符类   编号   示例   说明   1
  .   匹配除换行符以外的任何字符   2
  d   匹配数字:[0-9]   3
  D   匹配非数字:[^0-9]   4
  s   匹配空格字符:[ r f]   5
  S   匹配非空格:[^ r f]   6
  w   匹配单字字符: [A-Za-z0-9_]   7
  W   匹配非单字字符: [A-Za-z0-9_]   重复匹配   编号   示例   说明   1
  ruby?   匹配"rub"或"ruby":y是可选的   2
  ruby*   匹配"rub"加上0个以上的y   3
  ruby+   匹配"rub"加上1个或更多的y   4
  d{3}   完全匹配3位数   5
  d{3,}   匹配3位或更多位数字   6
  d{3,5}   匹配3,4或5位数   非贪婪重复   这匹配最小的重复次数 :   编号   示例   说明   1
  <.*>   贪婪重复:匹配" perl>"   2
  <.*?>   非贪婪重复:在" perl"中匹配""   用圆括号分组   编号   示例   说明   1
  Dd+   没有分组:+重复d   2
  (Dd)+   分组:+重复Dd对   3
  ([Pp]ython(,)?)+   匹配"Python","Python,python,python"等   反向引用   这与以前匹配的组再次匹配 :   编号   示例   说明   1
  ([Pp])ython&1ails   匹配python和pails或Python和Pails   2
  ([""])[^1]*1   单引号或双引号字符串。1匹配第一个分组匹配。 2匹配任何第二个分组匹配等   备择方案   python|perl : 匹配"python"或"perl"   rub(y|le) : 匹配 "ruby" 或 "ruble"   Python(!+|?) : "Python"后跟一个或多个! 还是一个?   锚点   这需要指定匹配位置。   编号   示例   说明   1
  ^Python   在字符串或内部行的开头匹配"Python"   2
  Python$   在字符串或内部行的结尾匹配"Python"   3
  APython   在字符串的开头匹配"Python"   4
  PythonZ   在字符串的末尾匹配"Python"   5
  bPythonb   在字词的边界匹配"Python"   6
  brubB   B是非字词边界:在"rube"和"ruby"中匹配"rub",而不是单独匹配   7
  Python(?=!)   匹配"Python",如果跟着感叹号。   8
  Python(?!!)   匹配"Python",如果没有感叹号后面。   带括号的特殊语法   编号   示例   说明   1
  R(?#comment)   匹配"R"。其余的都是注释   2
  R(?i)uby   匹配"uby"时不区分大小写   3
  R(?i:uby)   同上   4
  `rub(?:y   le))`   仅组合而不创建1反向引用   开课吧广场-人才学习交流平台-开课吧

开局顺利比亚迪海豚10月销量,环比增长超100作为国内新能源车的引领者,比亚迪汽车近几个月在新能源车方面的销量非常抢眼,连续数月超越特斯拉,成为国内新能源车销量最高的车企。而提起比亚迪的新能源车,相信很多人会跟我一样首先想到的升级霍尔扳机,突破极致体验,北通阿修罗2Pro无线版电竞游戏手柄上周六中国LPL赛区战队EDG夺得英雄联盟S11全球总决赛冠军,外加前段时间杭州亚组委正式对外公布了八款入选第十九届亚运会的电竞比赛项目,而且项目成绩将计入国家奖牌榜,中国的电竞正世界首富易位换主,身价冲破3000亿美元,隐形首富被忽略前些年,提到中国首富我们首先想到的就是马云和马化腾,作为互联网行业的先驱者,二马确实实力超群。但是根据日前胡润研究院发布的2021胡润百富榜来看,农夫山泉创始人,67岁的钟睒睒以3关于今天红米note11Pro延续今天写的内容其实我之前发过,但是找不到在哪发的,我重新写一次,不喜勿喷,手打不易。的确一款手机的心脏是CPU,但作为使用者我们才是它的灵魂,用好一部手机其实也需要用点小心思,所谓工RedmiNote115G的性能表现怎么样?您好,性能表现RedmiNote115G使用天玑810处理器,最高主频可达2。4GHz,搭载LPDDR4x极速内存UFS2。2极速存储。红米Note115G采用的是天玑810芯片,双11成绩公布,国产机都说自己是冠军,苹果笑而不语随着双11这一天过去,天猫京东都公布了自己的成绩,相比于去年,都有了提升,其中天猫从去年4982亿,增长到了5403亿,增长了8。而京东从去年的2715亿元,增长到了今年3491亿512内存的小米9Pro手机1800值得入手吗现在?感谢邀请512内存的小米9Pro手机1800值得入手吗现在?实际我觉得这个问题的答案并不是绝对的,因为虽然看上去小米9pro是2019年9月份左右小米发布的一款手机,现在已经过去了攻坚芯片底层技术,国产EDA软件迎来曙光,中国战队斩获全球冠军文BU审核子扬校对知秋当众人还沉浸在EDG夺冠的喜悦中时,一则更令人振奋的消息冲上了热搜中国团队夺得EDA全球冠军,这标志着我国卡脖子技术实现重大突破。何为EDA许多人可能对EDA怎么摆脱手机依赖,让自己更专注?卸载各种软件。您好记录美好生活,留下成长故事,我是成长身边事小编l乐华,很高兴回答您的问题。关于如何摆脱手机依赖,让自己更专注?近年来,随着智能手机的功能日益强大,好多人都已经离不科技犬双11值得买直屏手机盘点荣耀真我红米OV,六款可选科技犬双11值得买直屏手机盘点荣耀真我红米OV,六款可选推荐一,RedmiK40Pro京东商城显示,Redmi超大杯旗舰K40Pro领券立减200元,到手价为2799元(12GB2你会放弃苹果手机,使用国产手机吗?文小伊评科技分享一个果粉在更换手机前的心路历程(真实)使用国产安卓旗舰手机之前安卓手机系统卡慢顿,功能花里胡哨的不实用,拍照也不如苹果好,屏幕素质垃圾。使用国产安卓旗舰手机之后安卓
富德生命人寿全面启动2021金融知识普及月金融知识进万家活动为进一步增强金融消费者的资金安全意识和自我保护意识,富德生命人寿积极响应人民银行银保监会证监会国家网信办工作要求,于今年9月在全辖开展金融知识普及月金融知识进万家争做理性投资者争做国庆遛娃好去处萌趣星礼遇全城国庆专场活动等你来嗨国庆小长假就要来啦!各位家长朋友们有想好带着萌娃去哪玩儿吗?10月1日,拥有一亿点播量的萌趣星故事节目将举办萌趣星礼遇全城活动,带着可爱的G仔与它的朋友们和大家一起欢度佳节!(是码链建构的点线面体系共富路径日前,光明日报发表共同富裕的实现路径的署名文章。作者提出了实现共同富裕,要增强发展能力提高就业质量。要创造更加普惠公平的条件,畅通向上流动通道,给更多人创造致富机会,形成人人参与的码链为促进就业规划任务开辟新路径近日国务院印发的十四五就业促进规划指出,十四五时期就业领域也出现了许多新变化新趋势。人口结构与经济结构深度调整,劳动力供求两侧均出现较大变化,产业转型升级技术进步对劳动者技能素质提玄不改非氪不改命?盲盒隐藏款到底怎么抽?神秘攻略来了最近,随着热播节目萌趣星故事的点击量破亿节目周边盲盒也已持续刷屏朋友圈胖萌的G仔让不少小伙伴心动不已小编我也是日思夜想希望能抽到G仔,集齐全套盲盒,召唤神龙!不过,作为隐藏款的G仔行进在知识产权强国路上的扫一扫发明专利为统筹推进知识产权强国建设,全面提升知识产权创造运用保护管理和服务水平,充分发挥知识产权制度在社会主义现代化建设中的重要作用,近日,印发的知识产权强国建设纲要(20212035年)关于美瞳线如何选择针头?聚亿美为你详细解答小伙伴们都知道,纹绣仪器的针头种类很多,分为单针圆针以及排针,而每一种针头所操作出来的效果自然也不一样。对于美瞳线来说,要想操作出优秀的作品,不仅要高超的技术手法,也要懂得合理运用护眼阅读与HiFi音乐相伴海信TOUCH休闲读书好帮手阅读是一个好习惯,不仅仅能够扩展我们的知识,对于娱乐消遣来说,也是一个非常合适的选择。不过,手机屏幕因为亮度以及发光材料等问题,护眼阅读是个难题。同时,听音乐歌曲也是日常消遣的好方百公里加速仅需3。8秒2020款奥迪RSQ8官图发布近日,奥迪汽车发布了一组2020款奥迪RSQ8的官方图片,新车在奥迪Q系列产品线中处于同类产品的顶级,奥迪运动(AudiSport)的高性能SUV轿跑车代表着出色的驾驶性能,在设计3499元起,华为nova9Pro影像升维,呈现你的美9月23日华为新品发布会上,华为nova9Pro正式发布,现在年轻人喜欢用影像和图片来记录美好生活的瞬间,华为nova9Pro手机拥有强大的摄像功能,并且加持了许多科技元素,华为n大家快检查行驶证,很多人因为这个字无法年审!今天小编给大家讲讲,如今越来越多的准车主加入了用车大军行列,但往往忽略了驾驶以外的一些重要事情。就比如小编的一位朋友,忽略了行驶证上的一个字,导致汽车无法年审,这是因为什么呢?让我