1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#re模块 正规表达式
 
import  re
 
#match函数和search函数
'''
re.match函数
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
函数语法:
re.match(pattern, string, flags=0)
函数参数说明:
参数描述:
pattern    匹配的正则表达式
string    要匹配的字符串。
flags    标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
 
匹配成功re.match方法返回一个匹配的对象,否则返回None。
 
我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。
匹配对象方法描述:
group(num=0)    匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups()    返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
'''
'''
res1 = re.match('\d+','ddhfs33y98y392chhdf')    
res2 = re.search('\d+','dasdjkhf7fn84857fjg749') 
 
if res1:
     print res1.group()
else:
     print 'no'
 
 
if res2:
     print res2.group()
else:
     print 'no'
'''
 
'''
区别:
match从起始位置开始匹配,只从开头开始找,没有的话返回none
search整个内容里去匹配,放眼于整个字符串查找,直到找到为止,找到了就返回一个对象
'''
 
 
#findall函数
res3  =  re.findall( '\d+' , '99dad97765554dadaddd111222dfe333da444dadad555666' )
 
#print res3
 
'''
findall的作用:
只要和表达式相匹配的都拿过来,会一直找,找到所有的
'''
 
#compile函数 作用:编译表达式
com  =  re. compile ( '\d+' #编译表达式后生成一个对象
#print com.findall('99dad97765554dadaddd111222dfe333da444dadad555666')
 
'''
如果用同样的表达式去匹配100次不同的字符串,
那么这种方式就是先编译一次,去查找100次,编译表达式这种方式效率更高
'''
 
 
#小粒子2
#目标:在这段悲催的字符中找出IP地址
#知识点:正规表达式 "\d" 代表一个数字,{1,3}代表出现1-3次
ips  =  '12.34.43.ddsd.dwdda.ddad.rfaw+87dd192.168.32.43_hfshfsh.887fsdf'
com  =  re. compile ( '\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}' )
ip  =  com.findall(ips)
print  ip
 
 
#小粒子2
#目标:要求你填写的QQ号必须为5位到12位数字
#知识点: ”^“匹配字符串的开始,”$“匹配字符串的结束,{6,12}代表必须重复最少6次,最多12次,否则都不匹配。
#也就是说,您输入的QQ号码必须是不能少于6位,不能大与12位,否则出错
def  check_nums(qq):
     com  =  re. compile ( '^\d{6,12}$' )
     qqs  =  com.findall(qq)
     if  len (qqs)  = =  0 :
         print  '您输入的QQ号位数有误'
     else :
         print  '您的QQ号已受理'
 
check_nums( '996298929' )
 
'''
那么关于正规表达式的学习,下面推荐一个学习教程:http://deerchao.net/tutorials/regex/regex-1.htm
但这个教程仅仅只是入门而已。那么,平时在工作中用到的时候,不懂的在百度或到google查一查即可。
'''