美文网首页Python新世界python热爱者
Python爬虫实战,正则表达式的简单应用和示例演示!

Python爬虫实战,正则表达式的简单应用和示例演示!

作者: 48e0a32026ae | 来源:发表于2018-11-02 16:25 被阅读1次

    前一阵子小编给大家连续分享了很多篇关于Python正则表达式基础的文章。今天小编给大家分享的是Python正则表达式的简单应用和示例演示,将前面学习的Python正则表达式做一个概括。如果你感觉学不会?莫慌,小编推荐大家加入群,

    前面516中间107后面834,群里有志同道合的小伙伴,

    互帮互助,还可以拿到许多视频教程!

    下面的栗子是用于提取高考日期,一般来说,我们填写日期都会写2018年6月7日,但是也有很多人会写成2018/6/7、2018-6-7、2018-06-07等,还有的人可能会写为2018-06或者2018年6月。总之对日期的写法五花八门,那么我们现在需要写一个正则表达式来统一匹配这么多的情况,应该如何来处理呢?具体的教程如下所示。

    1、首先我们先写个简单的正则表达式,然后一步步经过测试,慢慢达到匹配的效果。

    这个正则表达式比较复杂,一下子可能看不懂,小编带大家一层一层的进行理解。

    2、我们从左到右对正则表达式进行分析,首先“.*”代表的是任意字符出现任意多次,对应原始字符中的“XXX”;“高考时间是”没有什么特别的,就是对应原始字符串中的“高考时间是”。

    3、接下来是“d{4}”代表的是连续出现4个数字,对应原始字符串中的年份“2018”;“[年/-]”表示取“年”、“/”、“-”中的任意一个字符,对应原始字符串中年份“2018”之后所连接的下一个字符。

    4、继续往后是“d{1,2}”代表的是连续出现1个到2个数字,对应原始字符串中的月份“6”或者“06”;“[月/-]”表示取“月”、“/”、“-”中的任意一个字符,对应原始字符串中月份“6”或者“06”之后所连接的下一个字符,同年份的理解如出一辙。

    5、接下来就复杂一些了,其中“d{1,2}”的理解同月份的理解一致,关键是关于“日”的提取主要需要注意有的字符串有日期,有的字符串并没有日期,所以需要特殊字符“|”来表示“或”的关系,并且用特殊字符“$”来表示结束。

    6、理解了上述关系之后,接下来依次验证六个原始字符串,看看是否能匹配成功。下图是原始字符串string2的匹配情况。

    发现可以匹配得上。

    7、下图是原始字符串string3的匹配情况。

    发现可以匹配得上。

    8、下图是原始字符串string4的匹配情况。

    发现可以匹配得上。

    9、下图是原始字符串string5的匹配情况。

    发现这种模式并不能匹配上,这是什么原因呢?

    10、原因是月份“d{1,2}”后面限定要跟“[月/-]”,而原始字符串string5的时间为“2018-06”,其后面没有任何的字符就结束了,也匹配模式搭配不上,因此在这里需要改进一下。

    需要利用特殊字符“|”和特殊字符“$”,做一个“或”的选择,如上图所示,之后就可以匹配成功了。

    当然也可以直接把“[月/-]”一起加入到第二个括号里,如下图所示,这种方式更为简便。

    11、下图是原始字符串string6的匹配情况。

    可以看到此时可以成功匹配。

    经过测试可以发现,此时改进后的字符串对6种不同日期的字符串都可以成功匹配。小伙伴们,有没有感受到正则表达式的魔力呢?

    相关文章

      网友评论

        本文标题:Python爬虫实战,正则表达式的简单应用和示例演示!

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