#!/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从起始位置开始匹配,只从开头开始找,没有的话返回nonesearch整个内容里去匹配,放眼于整个字符串查找,直到找到为止,找到了就返回一个对象'''#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查一查即可。'''