美文网首页
正则表达式小记(1)

正则表达式小记(1)

作者: Mercury今 | 来源:发表于2017-12-15 10:48 被阅读0次

    偶然遇到了一道题目: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)

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

    相关文章

      网友评论

          本文标题:正则表达式小记(1)

          本文链接:https://www.haomeiwen.com/subject/kgprwxtx.html