首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

爬虫必学知识之正则表达式上篇

这是日常学python的第12篇文章

在向网页进行了提交请求之类的之后,我们可以得到了网页的返回内容,里面自然而然会有我们想要的数据,但是html元素文本这么多,我们不可能一 一去找我们需要的数据,这时就需要用到正则表达式了,正则表达式是学爬虫必须学的内容,而且不止python可以用,java等其他语言都可以用,所以学了好处大大。

什么是正则表达式?

正则表达式就是一个特殊的字符序列,可以用于检测一个字符串是否与我们的所设定的字符串相匹配。功能有快速检索文本和快速替换一些文本的操作。

python里面有个处理正则表达式的库re。有个方法

findall(pattern,string,flags)

用来匹配正则达式,我们就先用这个方法处理下。

参数如下:

pattern:正则表达式

string:要进行匹配的字符串

flags:匹配的模式

结果是一个匹配内容的列表

'\d' : 这个表示匹配单个0-9数字

'\D' : 与\d相反,匹配数字以外的内容

用代码来感受下:

可以看到找出了字符串中的数字和非数字

如果我们在匹配一个字符串时,中间内容是有多个变化的,我们需要应变多种不同的字符,如这个字符串

如果需要匹配这个字符串时,我们就需要用到[ ],用中括号括起来的字符,里面的内容表示或关系,那来看看代码

上面匹配了中间字符是c或者是f的字符串,匹配中间字符非c和非f,可以在前面加个^符号

上面只处理了中间字符为chu者f的字符串,但是没有匹配全部的,若要匹配全部,可以加个-符号,表示范围,如下

[b-n]:这个就是表示b到n的字符

匹配汉字:[\u4E00-\u9FA5]

概括字符集:

用一个\ + 字母表示一系列的字符的元字符,只能匹配单个字符,常用的如下

\w:匹配数字和字符「不包括&符号」只匹配单词,数字和下划线

\W:与\w相反,这个包括空格和回车

\s:匹配空格字符,如空格,回车和制表符

\S:与\s相反

.:匹配除换行符之外的其他字符

还有前面的\d\D也是

有个小技巧:如果想要匹配所有字符,就可以把上面的两个相反的合并起来就可以了。

代码如下:

数量词:

当一个字符需要连续重复匹配多次时,就要用到这个。如匹配三个字符组成的字符串:

[a-zA-z],大括号里面的表示重复次数。

若要匹配三到六个字符,大括号的就需要这样写:.

代码如下;

其他数量词表示:

*:匹配零次或无限多次

+:匹配一次或以上

?:匹配零次或者一次

贪婪匹配:正则表达式默认为贪婪匹配,即匹配符合字符串的最大长度,如上面的[a-zA-z],他会趋于匹配长度为6的字符串,匹配到条件不满足时才停止匹配。

非贪婪匹配:就是趋于匹配长度最小的字符串,匹配满足第一个条件就会停止匹配

END

这篇文章只是介绍了下正则表达式的简单用法,可以用来入门正则,下一篇文章讲正则表达式高级点的用法。

留个小练习:写一个正则来匹配生日,字符串为:

2005-06-09

2005-6-9

2005 6 9

2005,06,09

可以把答案写在留言区哈!

上述文章如有错误欢迎在留言区指出,如果这篇文章对你有用,点个赞,转个发如何?

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180318A18EJY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券