Python 正则匹配(re)组的应用

昨天刚看完re的一小部分,今天刚好有个任务需要用到正则。

需求是:一张表的text字段存了很多内容。里面包括发给用户的邮件内容,已经用户的邮箱等等。现在需要查找出发送给哪些email以及多少封邮件。需要匹配的
是 <a href="mailto:AAA@DDD.com">AAA@DDD.com</a>',把 “AAA@DDD.com”取出来。

用下面的脚本:

#!/bin/env python
# -*- encoding: utf-8 -*-
#-------------------------------------------------------------------------------
# Name:        find_email.py
# Purpose:     从文本中正则匹配数据
# Author:      zhoujy
# Created:     2012-10-29
# update:      2012-10-29
#-------------------------------------------------------------------------------
import re
import fileinput
import MySQLdb

conn = MySQLdb.connect(host='192.168.1.20',user='zjy',passwd='123456',db='emd',port=3308)
query = '''select content from  message e JOIN mesInfo m ON e.id=m.id WHERE m.infoType=1 and date_format(e.sendTime, "%y-%m")="12-09"'''
cursor= conn.cursor()
cursor.execute(query)
item = cursor.fetchall()

pat = re.compile(r'<a href="mailto:(.*)"')
Finddict = {}

#for line in fileinput.input():
for line in item:
    line=str(line)
    m = pat.search(line)
    if m:
#        print m.group(1)
        Finddict[m.group(1)] = Finddict.get(m.group(1),0)+1
List = sorted(Finddict.items(),key=lambda i: -i[1])
for kv in List:
    print kv[0] + ' : ' + str(kv[1])

结果:

123456@qq.com : 11
123456@126.com : 10
123456@139.com : 10
123456@yeah.net : 9
123456@cmc.edu.cn : 7
123456@sina.com : 7
123456@fudan.edu.cn : 6
.....

另一个应用:
用正则表达式将网页代码中所有<img src="XXX"> 形式中的XXX的字符串提取出

#!/usr/bin/env python
#-*-encoding:utf8-*-
#用正则表达式将所有<img src="XXX"> 形式中的XXX的字符串提取出

import sys
import urllib2
import re

def get_html(url):
    data = urllib2.urlopen(url).read()
    pat  = re.compile(r'<img src="(\S*)"') #正常情况只需要写成:r'<img src="(.*)"' ,但有些后面会带有一些长宽等属性,所以需要去除空白字符
    imgs = pat.findall(data)
    for i in imgs:
        print i
if __name__ == '__main__':
    url = sys.argv[1]
    get_html(url)

效果:

zhoujy@m2:~$ python get_url.py http://www.baidu.com
http://www.baidu.com/img/bdlogo.gif
http://www.baidu.com/cache/global/img/gs.gif


知识点:

re模块,匹配对象和组。--- < Python 基础教程(第2版) P191~P200 >

posted @ 2012-10-29 16:49  jyzhou  阅读(2643)  评论(0编辑  收藏  举报