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

正则表达式应该怎么学?

  学习正则表达式最好的方式是读《精通正则表达式》这本书:
  《精通正则表达式》
  建议认真学完前6章,后面与具体编程语言相关的可以跳过。花一些时间系统地学习一下正则表达式是非常有好处的。就像张无忌学会九阳神功后学其他武功都特别快,学会正则表达式后再学习UNIX/Linux的下的工具也都特别快!
  除了推荐书籍,我也分享一下我自己读写正则表达式的心得。如何读正则表达式?
  《精通正则表达式》这本书让我认识到,正则表达式只是一种描述字符串长什么样的声明式语言,是字符串的元信息。就像SQL是用来描述数据长什么样的声明式语言,只是SQL使用更直观的英文单词作为关键词,而正则表达式使用的是更加精炼但也更加晦涩的符号字符。
  所以,学习正则表达式与学习其他语言的过程是一样的,需要学会这门语言的词法、语法、语义。如果对这些词法、语法、语义不熟悉,看正则表达式就像天书一样。
  词法
  如前文所述,正则表达式的单词由标点符号字符组成。和汉语、英语等自然语言一样,这些单词也有词性,包括字符(character)、字符类(character class)、分组(grouping)、量词(quantifier)、锚点(Anchor)等。
  想要一股脑记住所有符号及其含义,就像从头到尾背英语词典一样,是很低效且痛苦的。好在正则表达式的单词也符合2-8法则,就像英语里的常用词一样并不多,诸如零宽断言等用法其实不太常用,用到的时候临时查文档复习一下用法就行。
  以下几个字符是最最常用的元字符:
  单词
  词性
  语义
  ^
  锚点
  以……开头
  $
  锚点
  以……结尾
  .
  字符集
  任意字符
  *
  量词
  任意多个
  +
  量词
  1个或多个
  ?
  量词
  0个或1个
  需要注意的是,除了惰性匹配的量词,其他量词默认都是贪心匹配,即尽可能多地匹配、直到无法匹配为止。
  语法
  正则表达式的语法并不多,除了要开闭括号要能一一对应,也就是量词只能放在字符、字符集、分组的后面。
  示例
  举个例子:/^ab+c*$/
  该模式读作:"有一些字符串,它们以1个a开头,紧接着1个或多个b,最后以任意多个c结尾。"符合这个规则的字符串很多,有"ab"、"abc"、"abbccc"等等。如何写正则表达式?
  有了前文读正则表达式的基础,基本上也能照葫芦画瓢写正则表达式了,但新手在写正则表达式的时候往往容易忽略"上下文",会写出非常具体、非常长的模式。因为正则表达式的主要用途就是用于文本匹配,所谓的"上下文"就是正则表达式预计在那些文本中匹配。上下文不同,解法也可以不同。
  举个例子,一个爬虫爬取到以下HTML页面信息:        
  • Bob
  • William
  • Vina
  假设希望在这些内容中匹配出包含「朋友姓名」的行,比较简单的方式有:/class="name"/   还能更简洁一些:/name/   或者更具体一些:/<[Ll][Ii]s+class="[^"]*bnameb[^"]*">[^<>]+</[Ll][Ii]>/   这三种方式哪种最好呢?这个得视情况而定。我的建议是:   如果数据来源比较可控,例如内部系统生成的数据,则尽量写简单有效的模式;   如果数据来源不可控,例如网络爬虫从外部系统抓取的数据,内容随时都有可能发生变化,那适度地优化一下正则表达式,让模式具备一些弹性去适应可预见的一些变化。   如果让我来写这个例子的正则表达式,我会倾向于这样写:/class="[^"]*bnameb[^"]*"/   这样既具备一定的弹性,例如未来添加了其他class,或li换成其他tag,都能自动适应;又不会过于复杂。   综上所述,正则表达式并没有唯一的标准答案,需要根据待匹配文本的上下文选择复杂度最合适的方案。因此,写正则表达式时不用着急,不必要求自己一次就写对。应该像写SQL一样在数据集上多select几次,对数据集有了较全面的认知后,不断修正数据过滤条件,就能优化出比较精炼的SQL;同样的,写正则表达式也是在目标字符串上反复筛选,最后就能优化出比较精炼的模式。

三伏天里,要多吃这6种凉性的碱性蔬菜,应季而食,平安顺利过夏三伏天里,要多吃这6种凉性的碱性蔬菜,应季而食,平安顺利过夏炎热的三伏天还没有过去,闷热潮湿,动一动汗水就会哗哗流出!在这样的酷暑里,我们格外要注意养生保健,因为大量的出汗,会使我中医教你辨别4种大便,了解身体健康信号一般来说,正常的大便是无异味的黄色的条形的香蕉便,每天定时顺畅排出12次。大便的形成与脾胃肝肾大肠小肠胆相关,所以大便是重要的身体健康晴雨表。中医教你辨别4种大便,快速了解身体健康支付宝每日答题答案大全今日答案支付宝每日答题现在分为三个答题板块了,分别是蚂蚁庄园小课堂乡村知识小课堂每日任务学习海洋小知识这三个板块。蚂蚁庄园小课堂,每天答题后,可以领1次小鸡饲料。乡村知识小课堂,答对村民数今日欧美明星时尚街拍图集今日欧美明星时尚街拍图集(2022年8月1日)时尚欧美明星的街拍就是行走在马路上的秀场,明星们的街拍就是时尚界的潮流风向标。明星们身穿什么牌子的衣服肩背什么大牌包包,脚蹬什么潮流鞋vivoY02s意外曝光配5000mAh电池发布日期还是个谜vivo手机正在努力扩展其已经相当广泛的Y系列入门级智能手机,此前,有消息称,vivo有两款Y系列手机即将推出,分别是Y305G和Y02s。8月1日,手机中国从外媒了解到,即将推出资源丰富,无线连接,汉印FT800打印机体验前言打印机是很多家庭必备的产品,无论是办公还是学习对打印机的需求都很高,市面上的打印机以喷墨打印机激光打印机热敏打印机三种为主,汉印热敏打印机FT800相比传统打印机,外观小巧美观暗黑破坏神不朽手游升级攻略新手和老玩家的区别就在于升级效率文卡哥游戏攻略大家好,我是卡哥。说句实话,说暗黑破坏神不朽这款游戏需要大量氪金,玩了15分钟就要下载的玩家不在少数,但是真正玩下去的玩家并不觉得这个游戏不氪金就玩不了了。游戏被设计魔镜物语狩猎时刻第三章通关攻略狩猎时刻是魔镜物语近期推出的一个活动关卡,很多玩家都想要知道魔镜物语狩猎时刻第三章怎么过,小编为大家带来魔镜物语狩猎时刻第三章通关攻略。魔镜物语狩猎时刻第三章通关攻略1。魔镜物语狩原神海岛大冒险隐藏任务四礁觅宝记活动攻略大家好,我是小白,今天给大家带来一期原神海岛大冒险隐藏任务四礁觅宝记攻略,这个任务完成总共可以获得160原石。原神海岛大冒险隐藏任务可获得160原神大家可以参考这个视频哦。第一步我自由之刃(凤凰传奇魂环攻速)新手快速起号攻略赤月龙城(自由之刃凤凰传奇魂环攻速)这是一款最新版三职业魂环攻速传奇,下面给大家介绍下这款游戏中的新手快速起号攻略。折扣!福利!礼包!滴滴!新手前期如何快速起号?首充绿毒裁决,VI夏天食用这3种红色食物,或有助于养护心脏,不妨试试夏天是心脑血管疾病的高发季节,这与气温的升高有着直接的关系。据统计,我国每年有400万人因心脑血管疾病而丧命,在这些人当中,60以上的患者都是在夏天发病的。除了心脑血管疾病以外,夏
31!巴黎太猛,豪取7连胜,目标9分,梅西冲本菲卡首球10月6日凌晨,欧冠第3轮继续进行,巴黎圣日耳曼客场挑战本菲卡,加尔蒂埃渴望战胜对手,拿满三分。在赛前,两队同积6分,巴黎以进球多力压本菲卡,领跑积分榜。巴黎近况如日中天,豪取7连10。05体育早8点女乓团体淘汰赛中国女排复赛第一场2022年10月5日星期三成都乒乓球团体赛女团1930匈牙利女排复赛2315波多黎各一乒乓球团体赛北京时间10月4日乒乓球团体赛结束了全部小组赛,今天最后一轮比赛结果是中国男团30世乒赛中国男女队小组赛四战全胜携手晋级世乒赛综合中国男女队小组赛四战全胜携手晋级新华社成都10月4日电(记者陈地)4日,在成都进行的2022年第56届世界乒乓球团体锦标赛(决赛)最后一轮小组赛中,中国男女队以30的比分意大利输球领跑,日本升第二,塞尔维亚六连胜,世锦赛最新排位女排世锦赛第二阶段全面开战,E组中,巴西女排3比2力擒意大利,送给后者世锦赛首败,而输球的意大利仍旧凭借积分优势领跑,日本3比1逆转比利时,排名暂时超越中国升至第二,荷兰3比1阿根最新!中国女排跌至小组第四,巴西搅浑排名,压力给到了中国日本最新!中国女排跌至小组第四,巴西搅浑排名,压力给到了中国日本2022女排世锦赛复赛首日比赛结束,E组8队其中的6支队伍进行了3场比赛,仅剩中国女排和波多黎各没有比赛。现在最新的积分女排世锦赛一夜4场大逆转!夺冠热门翻车,中国女排竞争对手获胜女排世锦赛第二阶段首个比赛日结束,尽管中国女排轮休一天,但是进行的七场比赛,可以说是场场精彩,其中有四场出现了大逆转。夺冠大热门意大利意外翻车,之前保持不败的她们,复赛首轮对阵巴西太阳喜迎新老板,球队交易价值将达到nba历史最高菲尼克斯太阳队以及水星队老板萨弗将球队的出售委托给了一家投资银行。该投资银行高管透露,这支球队的出售将达到nba有史以来的最高价值。2019年,蔡老板以23。5亿美元收购了布鲁克林欧冠综述3队全胜出线在望,国米利物浦形势大好,巴萨陷入绝境北京时间10月5日,欧冠小组赛第3轮首个比赛日,8场比赛只有1场平局,其他7场比赛全部分出胜负。拜仁那不勒斯和布鲁日开局3战全胜出线在望,巴萨输掉6分大战后陷入绝境,利物浦和国米出雪藏头号王牌!日本主帅中国有主场优势早田希娜不必每场出战本届成都世乒赛女团对决,日本女队小组赛表现稳定,前两战轻取波兰和斯洛伐克,而这两场比赛核心主力早田希娜没有出场,日本媒体披露日本女队主帅是有意安排,为了针对中国队使出的战术策略,不广东全员隔离,CBA给出明确决定!缺席比赛全负,球队恐缺席3场目前广东的情况确实被无数人热议。而在全员隔离之后,都在讨论他们缺席的比赛到底如何解决。而根据CBA明文规定,他们写明了如果出现突发情况,后果球队自负,缺席的比赛判负,以020计算。巴萨客场不敌国米,莱万隐形揭示球队问题,登贝莱难堪大任欧冠小组赛C组第3轮国际米兰在主场1比0战胜巴塞罗那,巴萨在欧冠小组赛遭遇两连败。积分榜方面,巴萨3战1胜2负积3分下滑至第三位。本场比赛过后,巴萨已经连续3个欧冠客场比赛没有进球