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

Python正则表达式(一)

  正则表达式(regular expression)在编程中占有重要地位,它能够按照指定的方式匹配具有某种结构的字符串。本文将对此技术给予详述。Python中的正则表达式
  假设有一个字符串s,在程序中,需要检查"123"是否为这个字符串的一部分,这种需求可以用下面的代码实现。>>> s = "foo123bar" >>> "123" in s True
  如果你不仅想知道"123"是否在字符串s中,还想知道它在字符串的什么位置,可以使用字符串的.find()或者.index()方法,返回"123"在s中的索引。>>> s = "foo123bar" >>> s.find("123") 3 >>> s.index("123") 3
  在上面的例子中,是按照字符一一对应的方式匹配的,这种方式会适用于很多地方,但是,有时候也会有更复杂的问题。比如,判断字符串中是否有像"123"这样有数字组成的字符串,例如"foo123bar"、"foo456bar"、"234baz"、和"qux678"`,再用上面的方法,就会太麻烦了,这就要正则表达式出场了。正则表达式极简史
  1951年,数学家斯Stephen Cole Kleene提出了正则表达式,20世纪60年代中期,计算机科学先驱Ken Thompson——Unix的原始设计师之一,他使用Kleene创造的符号在QED文本编辑器中实现了模式匹配。
  自那时以来,正则表达式就出现在了许多编程语言、编辑器和其他工具中,作为确定字符串是否与指定模式匹配的方法,Python、Java 和 Perl等 都支持正则表达式,大多数Unix工具和许多文本编辑器都支持正则表达式。re模块
  Python中的正则表达式用re模块实现,它包括很多实用的方法,接下来,会介绍其中的大部分。
  现在,先来研究re.search()。re.search(, )      Scans a string for a regex match.
  re.search(, )按照参数所设置的正则表达式,扫描参数的字符串,这个过程可以称为"匹配",如果有符合正则表达式结构的子字符串,即匹配存在,就会返回第一个所匹配的对象,否则返回None。
  后面还会介绍,re.search()中的第三个参数。怎么使用re.search()
  基本使用方法如下:import re re.search(...) 熟悉模块使用方法的,可能会知道,还能这样做:  from re import search search(...)示例
  下面的示例,演示re.search()的基本应用:>>> s = "foo123bar" >>> import re >>> re.search("123", s) <_sre.SRE_Match object; span=(3, 6), match="123">
  在上面示例中,就是123,是字符串s,最后返回了匹配结果,有此结果,我们至少知道字符串s中含有"123"。
  如果写一个比较完整的程序,可以用条件语句判断一下:>>> if re.search("123", s): ...     print("Found a match.") ... else: ...     print("No match.") ... Found a match.
  前面代码中返回结果<_sre.SRE_Match object; span=(3, 6), match="123">,其中的span(3, 6)意思是字符串中匹配出现的位置,与切片的含义一样。>>> s[3:6] "123"
  不过,上面的例子显然没有体现正则表达式的优势,只说明了它的基本操作流程。正则表达式中的元字符
  在正则表达式中,有一些特定字符,它们被称为元字符,每个元字符,代表了正则表达式中的某个特殊含义,能够满足正则匹配搜索引擎的查询之需。
  例如,一组方括号([ ])表示了一个元字符类,即匹配字符类中的任何一个字符:>>> s = "foo123bar" >>> re.search("[0-9][0-9][0-9]", s) <_sre.SRE_Match object; span=(3, 6), match="123">
  [0-9]表示要匹配0到9的任何一个数字字符,[0-9][0-9][0-9]则表示匹配连续三个0到9之间的任何数字字符,在字符串s中,符合要求的就是123。>>> re.search("[0-9][0-9][0-9]", "foo456bar") <_sre.SRE_Match object; span=(3, 6), match="456">  >>> re.search("[0-9][0-9][0-9]", "234baz") <_sre.SRE_Match object; span=(0, 3), match="234">  >>> re.search("[0-9][0-9][0-9]", "qux678") <_sre.SRE_Match object; span=(3, 6), match="678">
  如果没有连续的三个数字字符,就不会匹配。>>> print(re.search("[0-9][0-9][0-9]", "12foo34")) None
  另外一个元字符的例子是"句点"(.),它表示任何一种类型的字符(除了换行符):>>> s = "foo123bar" >>> re.search("1.3", s) <_sre.SRE_Match object; span=(3, 6), match="123">  >>> s = "foo13bar" >>> print(re.search("1.3", s)) None
  在第一个例子中,1和3是明显有匹配的,.匹配了2。但是,第二个示例则没有匹配。re模块的元字符
  下表中列出的,是re模块支持的元字符。
  下面以示例说明部分元字符的应用。字符类符号:[ ]
  [ ]里面表示的字符类,即要匹配的一个字符集合。>>> re.search("ba[artz]", "foobarqux") <_sre.SRE_Match object; span=(3, 6), match="bar"> >>> re.search("ba[artz]", "foobazqux") <_sre.SRE_Match object; span=(3, 6), match="baz">
  [artz]表示4个独立的字符,在上面的示例中,正则表达式ba[artz]匹配了字符串中的bar和baz,当然,如果有可能,还可以匹配baa、bat。
  字符集中,可以用-表示字符序列的范围,例如[a-z]表示匹配英文小写字母a到z中的任何一个字母。>>> re.search("[a-z]", "FOObar") <_sre.SRE_Match object; span=(3, 4), match="b">
  [0-9]表示任何一个数字字符:>>> re.search("[0-9][0-9]", "foo123bar") <_sre.SRE_Match object; span=(3, 5), match="12">
  在这个示例中,[0-9][0-9]表示匹配两个数字组成的字符串,对于字符串foo123bar,匹配了第一次出现的符合正则表达式的部分。
  [0-9a-fA-F]表示16进制的任何一个字符。>>> re.search("[0-9a-fA-f]", "--- a0 ---") <_sre.SRE_Match object; span=(4, 5), match="a">
  这里匹配了第一个出现的16进制的字符a。
  也可以在字符类中以^作为第一个字符,则表示要匹配该字符类的补集,即所有不是字符集中的字符。如下所示,[^0-9]表示非数字字符。>>> re.search("[^0-9]", "12345foo") <_sre.SRE_Match object; span=(5, 6), match="f">
  这里匹配的结果是第一个非数字的字母字符f。如果^不在首位,就没有了上面那种特殊含义了,仅仅是一个普通的^符号。>>> re.search("[#:^]", "foo^bar:baz#qux") <_sre.SRE_Match object; span=(3, 4), match="^">
  前面已经说过,-表示了字符范围,但是,如果希望在正则表达式中匹配一个连字符-,怎么办?如果-在首位或者末尾,就表示连字符本身,如果在中间,可以只用转义符。>>> re.search("[-abc]", "123-456") <_sre.SRE_Match object; span=(3, 4), match="-"> >>> re.search("[abc-]", "123-456") <_sre.SRE_Match object; span=(3, 4), match="-"> >>> re.search("[ab-c]", "123-456") <_sre.SRE_Match object; span=(3, 4), match="-">
  同样,对于]符号,也可以用类似方法处理。>>> re.search("[]]", "foo[1]") <_sre.SRE_Match object; span=(5, 6), match="]"> >>> re.search("[ab]cd]", "foo[1]") <_sre.SRE_Match object; span=(5, 6), match="]">
  在[ ]所设定的字符集中,其他各种元字符都失掉了作为元字符的含义。>>> re.search("[)*+|]", "123*456") <_sre.SRE_Match object; span=(3, 4), match="*"> >>> re.search("[)*+|]", "123+456") <_sre.SRE_Match object; span=(3, 4), match="+">
  这些元字符都编程了普通的字符。

英雄联盟2022全球总决赛LPL赛区参赛战队RoyalNeverGiveUp背景介绍2016年,继承了皇族之名的新战队RoyalNeverGiveUp出现在大众的视野中。这支皇族拥有两位S4世界冠军成员上路Looper和辅助Mata,以及三位潜力新人打野M现在的人为什么都喜欢在手机上看旅游风景及儿时回忆的视频呢现在的人,都喜欢看旅行的视频看悠悠的风景看西藏新疆的骑行抑或听一首老歌,看一看小时候村里砖瓦房下大雪的样子,小时候滚铁圈跳皮筋等游戏,回忆小时候冬天没事干,打牌或者喝酒,喝酒慢悠悠下半年为什么买手机不要选128G?跟着内行人走,不会踩坑为什么说不要买128g的手机,是因为128g就和当年的64g一样,已经被时代所抛弃了,如今的64g是完全被淘汰了,128g也即将走上它的老路,128g手机究竟有哪些缺点,主要集中在丰田汽车公布8月全球产销数据产量创同期新高达766683辆中国质量新闻网讯(张阳)9月29日,丰田汽车公布了其8月全球范围内的产销数据。数据显示,8月丰田汽车全球销量同比增长3。8至777047辆,全球产量同比增长44。3至766683辆英雄联盟全球总决赛FMVP排行榜中国选手两次当选新京报讯英雄联盟2022全球总决赛突围赛即将打响,新京报电竞盘点了过往11届全球总决赛的FMVP(决赛最有价值选手)。由于第一届到第三届没有评选FMVP,因此只有8位选手出现在FM1天连发4篇期刊!我国科学家找到了从鱼演化到人的关键证据2022年9月29日,世界顶级期刊自然一天连续刊登了4篇论文,这4篇论文均来自于中国科学院古脊椎动物与古人类研究所,以及相关的合作单位。那么问题来了,这到底是一个什么样的研究成果,邮储银行拟大幅调低中长期代理储蓄存款的分档费率9月29日,南都湾财社记者获悉,中国邮储银行发布多则公告称,将调整中国邮储银行与中国邮储集团代理吸收人民币个人存款业务储蓄代理费率。据悉,邮储银行拟大幅调低付息率相对较高的2年3年人民币市场汇价(9月30日)新华社北京9月30日电中国外汇交易中心9月30日受权公布人民币对美元欧元日元港元英镑澳元新西兰元新加坡元瑞士法郎加元林吉特卢布兰特韩元迪拉姆里亚尔福林兹罗提丹麦克朗瑞典克朗挪威克朗除了美元全世界货币都在崩溃,人民币能挺住吗?自从人民币破7之后一路下行,昨天人民币汇率穿破7。2的关口达到7。24,各方对未来人民币的走势极度看衰,人民币是否还能挺住?这次美元的强势拉升,在我个人来看似乎是和中国进行了5年多人民币大涨1000点,物价和猪肉会涨吗?房价会稳吗?股票反弹吗?截止9月30日,人民币大涨1000点,在岸离岸人民币双双暴力拉升,隔夜离岸人民币盘中涨破7。09。在全球加息背景下,人民币单边预期扭转,对人民币长期平稳良好发展有着非常积极的作用。从数字领航员窥高德产品观场景才是关键对于并不缺少研发费用的数字人赛道来说,相比卷在打造吉祥物般的工具人上,充分发挥技术价值,找到更多可落地的应用场景,带给用户真实价值,才是数字人工业化时代成功的关键。作者小葵杨知潮编粉丝用虚幻5引擎重制了魔兽世界的巫妖王之怒版本魔兽世界巫妖王怀旧服已经上线,与此同时,一名国外的魔兽粉丝在近期发布了其自制的巫妖王之怒版本,不同的是使用了虚幻5引擎。该玩家叫Majusbeh,也被称作PixelsPlease,8岁男孩被爸爸一巴掌打死前一段时间,有一个八岁男孩爸爸在辅导作业的时候,一时没忍住,一巴掌打在后脑勺上,永远的离开门浴室,因为孩子呢,后脑勺血管畸形,很多家长呢,都有打孩子的习惯,但是这几个重要的部位是绝绘本推荐传统布艺,大爱!推荐儿童读物一只特立独行的猪绘本名一只特立独行的猪作者王小波(原著)张宁(改编绘)出版社接力出版社出版时间201805推荐星数4星豆瓣评分6。5分采用中国传统的剪布绣和贴布绣技艺,并借鉴生动古朴的汉画风格而创俺的顺产日记,历时40分钟,侧切了,生切,没麻醉的那种9。16的预产期,身边的朋友都39周左右发动了,而我却毫无动静。终于等不急了,到40w4的那天入院,进行催产9。20(也就是40w4)入院第一天尝试催产素早上十点左右,入院办了手续不孕不育怎么办,不要慌,让我来为你解决不孕不育这个问题依旧困扰着很多人,为此,有的夫妻甚至整日都在吵架,但到底怎么样才有效呢。哈喽,大家好!我是你们的朱医生,接下来让我告诉你一个真实发生的事。今天,朱医生来给你们详细地为什么小时候打针那么疼?(漫画)708090后的童年噩梦导语现在很多人都在注重自己的身体,如果身体有问题,可以到医院寻求治疗。一般来说,如果真的是病了,医生们都会用最常用的办法来进行调理,比如打针吃药等等,但是也不是没有办法。一提到注射想让孩子乖巧听话手把手教你聪明父母的说话之道1如何让孩子不再赖床场景1孩子早上不愿起床早晨起来,孩子可能会赖床,眼看着上幼儿园就要迟到了。父母往往会说呀!要迟到了!你快起床,我们得赶紧出发了,上幼儿园要迟到了!是不是听起来很耳超良心的10个景点,通通不用门票,最美的风景从来与金钱无关我国的旅游景区级别一共分为五级,从高到低依次为5A级4A级3A级2A级以及A级旅游景区。其中,国家5A级旅游景区是我国旅游景区的最高等级,也是代表中国世界级精品的旅游风景区等级。近关于国庆来西安的20条建议听说国庆假期你准备来西安玩?那你可要做好准备,西安拥有着5000多年文明史3100多年建城史1100多年的建都史,是一座充满了故事的城市,这里有来自新年的第一声钟声,有涓涓流动的护出行必看!!厦门疾控厦门交警发布重要提醒国庆黄金周即将来临,相信很多市民朋友正计划探亲访友,旅游出行。但近期境外疫情依然严峻,境内多地出现本土疫情,部分地区的疫情还呈现快速增长势头。为确保我市国庆长假期间疫情形势平稳,厦满城尽红装!潍坊迎国庆氛围感拉满!国庆将至潍坊满城飘红!大街小巷,各大景点挂上了五星红旗,摆好了鲜花车水马龙间五星红旗格外醒目节日氛围浓厚走!跟新哥一起去感受一下举国欢庆的节日少不了鲜花助兴在阳光的照耀下鲜艳的五星
自助餐为何一吃就饱?看似随便吃,实则套路深,员工说出内情自助餐为何一吃就饱?看似随便吃,实则套路深,服务员说出内情各位读者朋友们大家好,感谢阅读我分享的美食文章,经验和大家一起共享,今天我要和大家分享的内容是吃自助餐,为啥没吃多久就饱了建议中老年人这5种食物遇到别手软,好吃又营养,常吃少生病年龄大了要忌嘴,可不是说说而已,到了中老年,能吃的东西也变得越来越少,不是担心胆固醇过高,就是害怕身体出现毛病。在现在这个全民健康饮食时期,吃什么比做什么更重要,饮食方面只要把控好黄州东坡肉皮薄肉嫩,醇香可口,酥软即化近日我到黄州(东坡)赤壁旅游,到一家酒楼品尝了当地的著名美食黄州东坡肉。相传在北宋年间,苏轼被贬至黄州,躬耕于黄州东坡之余,常亲自下厨烹调菜肴待客,并与人吟诗作对,把酒言欢。一日家身高长得缓慢,可以试试吃这几类食物我们都知道,到了一定的年龄就不再长高了或者是个子长得缓慢,如果想让个子再往上长长,我们可以试试下面的这几种方法。一多吃优质蛋白质的食物,因为我们都知道,蛋白质是组成人体最重要的成分宝宝拉粑粑后,用清水洗好还是用湿巾擦好?做法不对或致红屁股文媛妈育儿日记原创,欢迎个人转发和分享自从有了孩子后,父母都逃不过屎尿屁那些事,除了要忍受难闻的味道外,还要做好宝宝的护理工作,而偏偏这护理又是难度最大的。和以前的宝宝不同,现在宝我很怀念2019年的五一假期互联网是有记忆的。只要打开微博一看,就能发现很多人在2019年的五一,过得都非常无忧无虑和充实。有的人呼朋引伴去参加了草原音乐节,有的人带着爱人去挪威看了极光也有的人独自去了西藏旅要跟着国运走前天,我堂弟去较场尾玩,我们也就一起过去,这两天变天,加上海边风大,把我头都吹痛了,昨天躺了一天,就没更新了。来深圳十几年了,这还是我第一次去较场尾,到了沙滩,颇为吃惊,沙滩很小,社保卡的使用范围就该不断扩大北京市社会保障卡管理办法近日公布。本市将逐步扩展社会保障卡在政务服务交通出行旅游观光等领域的应用。同时,已确定依托社会保障卡整合的公共服务,不再发放本领域民生类卡和证件。(5月2日人间最美四月天头号周刊人间最美四月天。四月,到希望的田野中去走走。看天,瓦蓝瓦蓝。丝丝缕缕的云,在天际漂流。一群群清脆的鸟叫声打破了田野的宁静。我放开喉咙一声大喊我来了!只见鸟儿呼啦啦飞向天空。春天让宝宝猛长个的辅食秘诀西葫芦虾饼推荐月龄9M特点补钙补锌补充维生素锻炼宝宝咀嚼能力营养特点春天是一年中生长激素分泌旺盛的季节,也是宝宝生长发育的黄金期。所以聪明的宝妈妈们应该及时抓住这段时间,给娃进行充慢性病大多是吃出来的?常出现在餐桌的1种主食,或是祸首发现中国的一大半人,都在受慢性病的折磨,从近些年的疾病报告中,就会有所体现,比如说高血压糖尿病高血脂高尿酸,以及一些骨骼疾病,颈椎腰椎问题,都是不容易被解决的慢性病,而且,很多癌症