正则表达式小记(1)

偶然遇到了一道题目:pattern = (3\d*)(5\d*)(7\d*) string = 38654712 ,问第三个括号的返回值是什么?

第一眼看到这个正则表达式的时候,我的想法是。。。。3\d*匹配不是到结尾了吗?第三个括号怎么会有返回值呢?

带着疑问和对出题人的质疑,我把题目放到了Regex tester下测试了一下,结果果然。。。我正则表达式的道行太浅。

上图: 

打脸图

后来仔细思考了一下原理,其实我们使用正则表达式筛选文本过多,把一个式子割裂开看了。pattern = (3\d*)(5\d*)(7\d*)是一个式子,而string= 38654712是符合这个规则的,因此这个string能够被这个模式串匹配到。如果3\d*直接匹配到尾,这个string便不能够被这个模式串匹配到。在匹配到之后,再拆开来看这3个返回值就不难理解了,第三个()的返回值就是从7开始到结尾的712。

(安利一波Regex tester插件,是pycharm中的一个基于Python re模块写的插件,非常好用,鼠标选择pattern,在text框中便会高亮对应的匹配值,安装教程请自行百度pycharm Regex tester)

(为个人学习、研究或者欣赏,使用此文的,需要标明作者、出处等信息。)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,967评论 19 139
  • Java的正则表达式讲解:(为了能看清,本文正则表达式用中文的句号代替英文句点) 英文句点符号:匹配单个任意字符。...
    红姑娘阅读 4,405评论 0 2
  • re模块手册 本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以...
    喜欢吃栗子阅读 4,050评论 0 13
  • 前言 对于正则,著称火星文字,见名知意主要它晦涩难懂,一直以来,看到它总是怕怕的,在平时,也只是简单的用用,其主要...
    itclanCoder阅读 803评论 0 2
  • 正则表达式到底是什么东西?字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等...
    狮子挽歌阅读 2,175评论 0 9