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

正则表达式应该怎么学?

  学习正则表达式最好的方式是读《精通正则表达式》这本书:
  《精通正则表达式》
  建议认真学完前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;同样的,写正则表达式也是在目标字符串上反复筛选,最后就能优化出比较精炼的模式。

又是羡慕河北人的一天,这些消夏打卡地美到骨子里河北文旅看图识景头条带你乐享河北微游河北我是大美河北推荐官又逢盛夏赏荷避暑海边畅游是时候安排起来了今日,带您以近距离慢生活微旅行的方式融入一方水土,品读生活真味感受河北夏日小美好赏津门虎外援贝里奇连胜让每个人更自信我们会发挥得越来越好直播吧7月1日讯中超联赛第7轮,天津津门虎32逆转击败深足,其中新外援贝里奇替补出场攻入制胜球。在接受天津日报采访时,贝里奇感谢了全队的帮助,并相信球队会越来越好。谈加盟津门虎的感河北一家黑马公园,处在地铁线之上,免费开放好评如潮随着城市特色的基本建设,公园这一城市设施已经加入到每个人的日常生活中。很多城市的公园平均占地总面积都非常高,而且大部分都可以近在咫尺的有公园玩。很多人在日常生活中也与公园有很多互动记者河北老队员用个人存款发红包庆祝首胜,总共大概几千元直播吧7月1日讯中超联赛第7轮,全华班出战的河北队21绝杀武汉长江,迎来赛季首胜。据记者裴力报道,河北队老队员用个人存款在微信群里发了几个红包。放眼中超联赛20年的历史,如今这支河教师个人教学计划精选实用教师个人教学计划精选实用(篇一)一教学业务方面1理论学习方面,认真学习领会新课程,关注幼教发展动态,看好每期的幼儿教育学前教育杂志善于思考,对一些名句进行摘录,养成多思多想多写的习中国女排30横扫波兰队止住三连败新华社北京6月30日电国际排联官网消息,在北京时间30日晚进行的2022年世界女排联赛保加利亚站的比赛中,中国女排30横扫波兰队,止住了三连败。6月30日,中国队球员在比赛中庆祝。G7版全球基建计划注定落空今年的G7峰会,中国不出所料再次成为重要的不在场的客人。据报道,G7将在未来五年筹集6000亿美元,推动全球基建和投资伙伴关系计划,以对抗中国的一带一路倡议。赵立坚外交部资料图其实幸福到万家赵丽颖的皱纹,张可盈的脸,这剧的滤镜好真实还记得2021年主旋律剧呈大爆发的状态,扫黑风暴凭借着带感且大尺度的剧情备受好评,山海情让观众见识到了农村干部们从无到有建设家乡的奋斗精神。而今年最让人印象深刻的剧作当属人世间,本未来十年可能会给人工智能取代的七个职业,有你正在做的职业吗?未来十年,我们将进入一个智能时代,有七个职业很有可能会被人工智能取代,特别是第四个,很可能就是你现在的工作,不管选专业还是找工作,能避开尽量避开,即使是啊过度也要快进快出。第一个,跑男10导演是真会,邀请她当杀青压轴嘉宾,光是看路透都爱了时间过得很快,还在更新的奔跑吧10,录制已经进入了尾声。6月29日,该节目最后录制一期完毕,节目组也更新了动态,官宣节目杀青的消息,瞬间引起了不少网友的围观跟热议。而比起杀青消息,梦想成为IT精英!大数据技术与管理学知识两手抓北京信息科技大学计算机学院如果你未来想从事IT产业,想要紧跟互联网人工智能区块链等信息技术前沿,想要成为将大数据技术与管理学知识两手抓的复合型人才别犹豫,看向北京信息科技大学计算机学院。6月17日晚1930
新买手机一定要充电8小时以上吗?好多人都听卖手机的人说,新买手机要持续充给手机充电8小时以上,手机才会耐用,如果第一次不充好电以后在充就达不到最佳效果,这种说法是真的吗?第一次要把电池充好激活电池这是没错,但是这全球最大的迪拜购物中心,内有巨型水族馆,外有一流音乐喷泉迪拜购物中心(DubaiMall)是全球最大的购物广场,单独的占地面积就有46万平米,相当于50个足球场那么大,里面有1500多家商铺。怎么形容它的大呢,若一家商铺逛个5分钟,走完陌陌涉嫌交友欺诈?相亲1小时花费近3000元被拉黑,陌陌称月老账号已封禁3月6日,据红星资本局报道,一位网友在社交平台发文称,约会神器陌陌涉嫌婚恋交友欺诈。该网友称,于12月经陌陌消息进入一个月老房间,经月老再三邀约去相亲后与女嘉宾相识。期间,月老多次1小时近400块!特斯拉充电超时占位费太贵一不小心大出血3月4日消息,博主科技新一发文称,特斯拉充电超时占位费为6。4元分钟,一小时就是384元。如果按涨价前的油价估算,一分钟的超时占位费差不多可以加一升92号油了。特斯拉的具体收费标准环球影城,排队两小时的餐厅到底哪里好?2021。122022。6这个冬天买了北京环球影城的悠游卡,经历了北京环球圣诞节与春节迥异的节日氛围,体验了阴晴雨雪下的奇幻乐园。大雪纷飞的霍克沃兹,充满了被黑魔法笼罩的阴森魔幻晴因起名谐音上下左右而走红网络的双胞胎兄弟上海一对刚出生九天的双胞胎兄弟,因起的名字而引起网友们的热议。兄弟俩爸爸的名字叫尚方剑,妈妈的名字叫左右,一个随爸爸姓取名尚夏,一个随妈妈姓取名左宥。有的网友们觉得孩子的名字取得有长视频玩家决定一起搞钱幸福的公司往往都是相似的,但是不幸的公司,各有各的不幸,长视频玩家们,就是如此。长达十年,闭口不谈盈利的长视频玩家们,终于在搞钱这件事上,开窍了。随着阿里(优酷)爱奇艺B站的财报出吃鸡首位破万kd玩家出现,每局平均56淘汰,暴击率超80大家好,欢迎来到由小鱼干开讲的吃鸡新鲜事速报,吃鸡游戏已经走过了4年多的时间,不过玩家对于kd的追求,似乎是永无止境的。不知道大家认为多少kd是比较强的呢?一般来说百局以上,3kd全球顶级富豪的象征,号称无所不能的黑卡到底有多神奇?全球顶级富豪的象征,号称无所不能的黑卡到底有多神奇?1999年,美国运通发行了运通百夫长卡,俗称黑卡,是世界公认的最高端的信用卡。与一般信用不同,这也是它最大的亮点不设信用额度上限偶像去世,斯诺克世界第4落泪!35完败,4强出炉,中国名将出局北京时间3月5日消息,2022年斯诺克威尔士公开赛4强出炉,提前上演的巅峰对决,尼尔罗伯逊35完败特鲁姆普。原来,尼尔罗伯逊赛前得知,自己的偶像澳大利亚知名板球运动员沙恩沃恩因突发湖阳记忆之十三湖阳祖村古井神奇的故事与情思十三湖阳祖村古井神奇的故事与情思邢少山在当涂县湖阳镇的祖村的村前有一口古井,民国当涂县志卷十载在湖阳祖村祖隽宅井尚存。今天,我就来到了这古井旁。这古井虽沉埋了近千年,但井底却亮如明