Python-强大的正则表达式,让你快速匹配字符串

对于字符串的查找,我想在爬虫的时候是十分苦恼的,想要找到子串的具体位置,我想大多数人眼睛都会看花;

时间久了之后我们会发现字符串的查找并不是那么的简单,也不是简单使用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

Python-强大的正则表达式,让你快速匹配字符串_第1张图片
Python-强大的正则表达式,让你快速匹配字符串_第2张图片
下面我们说一些实际运用当中的例子:

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']

正如大家所看见的一样,使用方法跟调用模块的方法名一样,我们只需要传入参数就行;

在这里就完了,希望这个对大家有用;
谢谢点赞评论!

你可能感兴趣的:(python,人工智能,python,正则表达式)