导入re库文件

import re

 from re import findall,search,S


secret_code = 'hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8dfse'   #红色为待带抓取内容


.的使用举例

 a = 'xy123'

 b = re.findall('x...',a)

 print b          ##执行后返回xy12,x...中“.”代表占位符,几个点就取x后几位


*的使用举例

 a = 'xyxy123'

 b = re.findall('x*',a)

 print b      

##执行后返回['x', '', 'x', '', '', '', ''],x*代表生成匹配x(0-无穷次)的列表,不匹配的生成空字符串''



?的使用举例

 a = 'xy123x'

 b = re.findall('x?',a)

 print b     

 ##执行后返回['x', '', '', '', '', 'x', ''],x?代表生成匹配x(0-无穷次)的列表,和x*的区别是列表最后加一个空字符串''



'''上面的内容全部都是只需要了解,需要掌握的只有下面这一种组合方式(.*?)'''


 .*的使用举例

 b = re.findall('xx.*xx',secret_code)

 print b

##执行后返回['xxIxxfasdjifja134xxlovexx23345sdfxxyouxx'],xx.*xx代表抓取第一个xx与最后xx之间的所有字符并输出一个列表


 .*?的使用举例

 c = re.findall('xx.*?xx',secret_code)

 print c

##执行后返回['xxIxx','xxlovexx','xxyouxx'],xx.*?xx代表抓取所有符合xx~xx格式的字符并生成列表中单独的字符串



 #使用括号与不使用括号的差别

 d = re.findall('xx(.*?)xx',secret_code)

 print d           #输出结果[‘I’,‘love’,‘you’]

 for each in d:

     print each

#输出结果为如下格式:

I

love

you


 s = '''sdfxxhello

 xxfsdfxxworldxxasdf'''

 d = re.findall('xx(.*?)xx',s)      #.号可以匹配任何字符(换行符\n除外)

 print d      #输出结果为["fsdf"]


 d = re.findall('xx(.*?)xx',s,re.S)             #re.S识别换行符\n

 print d      #输出结果为[“hello\n”,"world"]



对比findall与search的区别

 s2 = 'asdfxxIxx123xxlovexxdfd'

 f = re.search('xx(.*?)xx123xx(.*?)xx',s2).group(2)       #group(2),中2代表取第几部分

 print f              #输出结果“love”

 f2 = re.findall('xx(.*?)xx123xx(.*?)xx',s2)

 print f2[0][1]    #输出结果“love”


sub的使用举例

 s = '123rrrrr123'

 output = re.sub('123(.*?)123','123%d123'%789,s)

 print output

#输出结果 123789123


演示不同的导入方法

 info = findall('xx(.*?)xx',secret_code,S)

 for each in info:

     print each


不要使用compile

 pattern = 'xx(.*?)xx'

 new_pattern = re.compile(pattern,re.S)

 output = re.findall(new_pattern,secret_code)

 print output


匹配数字

a = 'asdfasf1234567fasd555fas'

b = re.findall('(\d+)',a)

print b  #输出结果为['1234567','555'],\d匹配出所有数字并逐条生成