文档详情

Python爬虫程序设计KC18.ppt

发布:2018-09-24约3.52千字共19页下载文档
文本预览下载声明
1.8 正则表达式 正则表达式是用来匹配与查找字符串的,从网上爬取数据自然或多或少会用到正则表达式。Python的正则表达式要先引入re模块,正则表达式以r引导,例如: import re reg=r\d+ m=re.search(reg,abc123cd) print(m) 其中r\d+正则表达式表示匹配连续的多个数值,search是re中的函数,从abc123cd字符串中搜索连续的数值,得到123,返回一个匹配对象,因此程序的结果如下: _sre.SRE_Match object; span=(3, 6), match=123 从结果看出,在指定的字符串中找到了连续的数值,它们是123,span(3,6)表示开始位置是3,结束位置是6,这正好是123在abc123cd中的位置。 Python中关于正则表达式的规则比较多,下面将介绍主要的内容,详细内容读者可以参考相关资料。 1、字符\d匹配0-9之间的一个数值。 例如: import re reg=r\d m=re.search(reg,abc123cd) print(m) 结果找到了第一个数值1: _sre.SRE_Match object; span=(3, 4), match=1 2、字符+重复前面一个匹配字符一次或者多次。 例如: import re reg=rb\d+ m=re.search(reg,a12b123c) print(m) 结果找到了b123: _sre.SRE_Match object; span=(3, 7), match=b123 注意:rb\d+第一个字符要匹配b,后面是连续的多个数字,因此是b123,不是a12。 3、字符*重复前面一个匹配字符零次或者多次。 *与+类似,但有区别,例如: import re reg=rab+ m=re.search(reg,acabc) print(m) reg=rab* m=re.search(reg,acabc) print(m) 结果: _sre.SRE_Match object; span=(2, 4), match=ab _sre.SRE_Match object; span=(0, 1), match=a 4、字符?重复前面一个匹配字符零次或者一次。 例如: import re reg=rab? m=re.search(reg,abbcabc) print(m) 结果: _sre.SRE_Match object; span=(0, 2), match=ab 匹配结果是ab,其中b重复一次。 5、字符.代表任何一个字符,但是没有特别声明时不代表字符\n。 例如: import re s=xaxby m=re.search(ra.b,s) print(m) 结果.代表了字符x _sre.SRE_Match object; span=(1, 4), match=axb 6、|代表把左右分成两个部分。 例如: import re s=xaabababy m=re.search(rab|ba,s) print(m) 结果匹配ab或者ba都可以: _sre.SRE_Match object; span=(2, 4), match=ab 7、特殊字符使用反斜线\引导,例如\r、\n、\t、\\分别表示回车、换行、制表符号与反斜线自己本身。 例如: import re reg=ra\nb? m=re.search(reg,ca\nbcabc) print(m) 结果匹配a\n\b: _sre.SRE_Match object; span=(1, 4), match=a\nb 8、字符\b表示单词结尾,单词结尾包括各种空白字符或者字符串结尾。 例如: import re reg=rcar\b m=re.search(reg,The car is black) print(m) 结果匹配car,因为car后面是以个空格: _sre.SRE_Match object; span=(4, 7), match=car 9、[]中的字符是任选择一个,如果字符是ASCII码中连续的一组,那么可以使用-符号连接,例如[0-9]表示0-9的其中一个数字,[A-Z]表示A-Z的其中一个大写字符,[0-9A-Z]表示0-9的其中一个数字或者是A-Z的其中一个大写字符。 例如: import re reg=rx[0-9]y m=re.search(reg,xyx2y) print(m) 结果匹配x2y: _sre.SRE_Match object; span=(2, 5), match=x2y 10、^出现在[]的第一个字符位置,就代表取反,例如[^ab0-9]表示不是a、b,也不是0-9的数字。 例如: import re reg
显示全部
相似文档