Python爬虫正则表达式常用符号和方法
正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。 1、常用符号 . :匹配任意字符,换行符 n 除外 :匹配前一个字符0次或无限次 .* :贪心算法,尽可能的匹配多的字符 .*? :非贪心算法 () :括号内的数据作为结果返回 2、常用方法 findall:匹配所有符合规律的内容,返回包含结果的列表 Search:匹配并提取第一个符合规律的内容,返回一个正则表达式对象 Sub:替换符合规律的内容,返回替换后的值 3、使用示例 (1). 的使用举例,匹配任意字符,换行符 n 除外 import re #导入re库文件 a = 'xy123' b = re.findall('x..',a) print b 打印的结果为:['xy1'] ,每个 . 表示一个占位符 (2) * 的使用举例,匹配前一个字符0次或无限次 a = 'xyxy123' b = re.findall('x*',a) print b 打印的结果为:['x','','x',''] (3) ? 的使用举例,匹配前一个字符0次或1次 a = 'xy123' b = re.findall('x?',''] (4) .* 的使用举例 secret_code = 'hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8dfse' b = re.findall('xx.*xx',secret_code) print b 打印的结果为:['xxIxxfasdjifja134xxlovexx23345sdfxxyouxx'] (5).*?的使用举例 secret_code = 'hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8dfse' c = re.findall('xx.*?xx',secret_code) print c 打印的结果为:['xxIxx','xxlovexx','xxyouxx'] (6) ()的使用举例 secret_code = 'hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8dfse' d = re.findall('xx(.*?)xx',secret_code) print d 打印的结果为:['I','love','you'] ,括号内的数据作为返回的结果 (7) re.S的使用举例 s = '''sdfxxhello xxfsdfxxworldxxasdf''' d = re.findall('xx(.*?)xx',s,re.S) print d 打印的结果为:['hellon','world'] ,re.S的作用是使 . 在匹配时包括 n (8) findall的使用举例 s2 = 'asdfxxIxx123xxlovexxdfd' f2 = re.findall('xx(. ?)xx123xx(. ?)xx',s2) print f20 打印的结果为:love 这时f2为含有一个元组的列表,该元组包含两个元素,该元组中的两个元素为两个()匹配到的内容,如果s2包含多个'xx(. ?)xx123xx(. ?)xx'这样的子串,则f2包含多个元组; (9) search的使用举例 s2 = 'asdfxxIxx123xxlovexxdfd' f = re.search('xx(. ?)xx123xx(. ?)xx',s2).group(2) print f 打印的结果为:love .group(2) 表示返回第二个括号匹配到的内容,如果是 .group(1),则打印的就是:I (10)sub的使用举例 s = '123rrrrr123' output = re.sub('123(.*?)123','123%d123'%789,s) print output 打印的结果为:123789123 其中的%d类似于C语言中的%d,如果 output=re.sub('123(.*?)123','123789123',s),输出结果也为: 123789123 (11) d 的使用举例,用于匹配数字 a = 'asdfasf1234567fasd555fas' b = re.findall('(d+)',a) print b 打印的结果为:['1234567','555'] , d+ 可以匹配数字字符串; 以上就是python爬虫正则表达式的一些常用符号和语法,希望对python初学者学习有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |