对于字符串的查找,我想在爬虫的时候是十分苦恼的,想要找到子串的具体位置,我想大多数人眼睛都会看花;
时间久了之后我们会发现字符串的查找并不是那么的简单,也不是简单使用find()方法来找到字符的具体位置;我们通过爬虫来下载图片,获取他的scr
太过繁琐,而且在有的网页爬取当中,他的子网页没有规律可言,这让蜘蛛
十分苦恼;还有就是很难在IP地址定位和对应端口,因为对于这个网页我们找不到“唯一的”class或者id(特征);
针对Python语言,我们使用re模块来实现;
import re
re.search(r"love","I love you !")
>>><re.Match object; span=(2, 6), match='love'>
"""
我们可以发现,这里返回的是包装好的一个‘集’
"""
span() 匹配的范围
a =re.search(r"love","I love you !")
print(a.span())
>>>(2,6)
start() 返回匹配的开始位置
a.start()
>>>2
end() 返回匹配的结束位置
a.end()
>>>6
group() 获取匹配对象的内容;如果匹配的对象中存在子组,那么可以通过group()中设置序号来获取相应的内容;
import re
a = re.search(r"(\w+) (\w+)","wo men s rfr gfe yuuuuew")
print(a.group())
print(a.group(1))
print(a.group(2))
>>>wo men
wo
men
1、ip地址匹配
#IP地址匹配
print(re.search(r"(([01]{0,1}\d{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])\.){3}([01]{0,1}\d{0,1}\d{0,1}\d|2[0-4]\d|25[0-5])","other192.168.1.1 iP"))
>>>
<re.Match object; span=(5, 16), match='192.168.1.1'>
2、数字匹配
print(re.search(r"[1-9][0-9][0-9]","wo men shi hao ren ,yi gong 812 ren"))#找到正则表达式中与之对应的子串
3、html信息匹配
a = "我都恶魔是博投票吧融不进狗屁
法人股份认购热虐"
d = re.search(r"src=(.*?\.jpg)",a)
print(d)
><re.Match object; span=(16, 39), match="src='http:baidu.com.jpg">
其实还有很多的运用
电话号码
身份证号
具体的规则表达式
链接
等等使用正则表达式的地方;
编译正则表达式
如果我们需要重复使用某个正则表达式,那么可以先选择将该表达式编译成为模式对象;使用re.complie()方法来进行编译
p = re.compile('[a-z]')
p.search("wo xi huan ni !")
><re.Match object; span=(0, 1), match='w'>
p.findall("I Love You")
>['o', 'v', 'e', 'o', 'u']
正如大家所看见的一样,使用方法跟调用模块的方法名一样,我们只需要传入参数就行;
在这里就完了,希望这个对大家有用;
谢谢点赞评论!