昨天刚看完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 >

版权声明:本文为zhoujinyi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zhoujinyi/archive/2012/10/29/2745004.html