正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。正则表达式是由普通字符(例如字符a到z)以及特殊字符(称为“元字符”)组成的。比如‘/b’就匹配单词的开头和结尾,我们想匹配出所有以s开头的单词,那么正则表达式可以写为:\bs\w*\b。\bs\w*\b的匹配顺序:先是某个单词开始处(\b),然后是字母s,然后是任意数量的字母或数字(\w*),最后是单词结束处(\b)。
常见元字符如下:
显而易见当想要匹配元字符本身时就会出现问题,所以需要字符转义。使用“\”来取消这些字符的特殊意义。因此如果查找“.”、“\”或者“*”时,必须写成“\.”、“\\”和“\*”。比如我们想要匹配www.baidu.com时,就可以写成www\.baidu\.com
当某些元素重复时,需要限定符,常见限定符如下:
就比如上篇随笔中提到的对百度百科词条的url进行匹配:
/item/\w+
我觉得对我自己来说这样粗略了解正则表达式就足够了,至于之后的零宽断言,分组,贪婪等等都在需要的时候再进行学习。
———————————————————————————分———————————————界———————————————————线—————————————————————————————
python中的正则表达式:
Python通过re模块提供对正则表达式的支持。使用re的一般步骤是先将正则表达式的字符串形式编译为Pattern实例,然后使用Pattern实例处理文本并获得匹配结果,最后使用Match实例获得信息,进行其他操作。主要用到的方法列举如下:
re.compile(string[,flag])
re.match(pattern,string[,flags])
re.search(pattern,string[,flags])
re.split(pattern,string[,maxsplit])
re.findall(pattern,string[,flags])
re.findit […]
compile函数将一个正则表达式的字符串转化为Pattern匹配对象。示例如下:
pattern = re.compile(r'\d+')
links = soup.find_all('a', href=re.compile(r'/item/\w+'))
(ToT)/~~~加油
PS:python版本:2.7
pycharm版本:community2020.2
很多很多相关内容摘自:《Python爬虫开发与项目实战》 — 范传辉 编著
在豆瓣阅读书店查看:https://read.douban.com/ebook/35093070/