您的位置:首页 > 编程语言 > Python开发

python3爬虫入门之正则表达式

2018-02-05 09:59 411 查看
本文对正则表达式进行简单的讲解,对于毫无爬虫基础的同学可以5分钟入门。

首先,导入爬虫所需要的re库。

import re.的使用:
#点号表示占位符
a='xz123'
b=re.findall('x.',a)
c=re.findall('x..',a)
print(b)
print(c)
['xz']
['xz1']
*的使用:
#*号匹配前一个字符0次或无限次
a='xyxy123'
b=re.findall('x*',a)
print(b)
['x', '', 'x', '', '', '', '', '']
?的使用:
#?号匹配前一个字符0次或1次
a='xz123'
b=re.findall('x?',a)
print(b)
['x', '', '', '', '', '']
.*的使用:
secret_code='hadkfalifexxIxxhfkfkjhjkh134xxlovexx4543367dsaxxyouxx8gffj'
b=re.findall('xx.*xx',secret_code)
print('b',b)
c=re.findall('xx.*?xx',secret_code)
print('c',c)
b ['xxIxxhfkfkjhjkh134xxlovexx4543367dsaxxyouxx']
c ['xxIxx', 'xxlovexx', 'xxyouxx']
括号的使用:
b=re.findall('xx(.*?)xx',secret_code)
print(b)
for each in b:
print(each)
['I', 'love', 'you']
I
love
you
跨行取词:
s='''sddfdxxhello
xxhjgjxxworldxxasd'''
b=re.findall('xx(.*?)xx',s)
print('b',b)
c=re.findall('xx(.*?)xx',s,re.S)
print('c',c)
b ['hjgj']
c ['hello\n', 'world']


对比findall与search的区别

s='sdaxxIxx123xxlovexxjhk'
b=re.search('xx(.*?)xx123xx(.*?)xx',s).group(2)#group里的数字小于等于正则表达式中括号数
print('b',b)
c=re.findall('xx(.*?)xx123xx(.*?)xx',s)
print('c',c)
print(type(c))
print(c[0][1])
b love
c [('I', 'love')]
<class 'list'>
love
sub的使用(自动翻页中常用):

s='123ghjjsnak123'
b=re.sub('123(.*?)123','789',s)
print(b)
789
纯数字匹配利器:
a='ashgaj47865432578jhbkj657576hkj'
b=re.findall('(\d+)',a)
print(b)
['47865432578', '657576']
爬虫中需要用到的基本正则表达式就全部介绍完了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: