Python 正则匹配(re)组的应用
2012-10-29 16:49
274 查看
昨天刚看完re的一小部分,今天刚好有个任务需要用到正则。
需求是:一张表的text字段存了很多内容。里面包括发给用户的邮件内容,已经用户的邮箱等等。现在需要查找出发送给哪些email以及多少封邮件。需要匹配的
是 <a href="mailto:AAA@DDD.com">AAA@DDD.com</a>',把 “AAA@DDD.com”取出来。
用下面的脚本:
结果:
另一个应用:
用正则表达式将网页代码中所有<img src="XXX"> 形式中的XXX的字符串提取出
效果:
需求是:一张表的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[/code]
知识点:
re模块,匹配对象和组。--- < Python 基础教程(第2版) P191~P200 >
相关文章推荐
- python中的re和正则匹配的基础扫盲
- 【学习python】re 正则表达式匹配特定词性的conll,提取句子主干(主谓宾)
- python re 正则表达式总结 匹配指定字符
- [Python]re+mmap实现大文件的正则匹配
- python应用regex正则表达式模块re
- python - re正则匹配模块
- python正则表达式 re (二)匹配对象和组
- python3 正则匹配 re.split,re.finditer,re.findall 方法
- 【Python3 爬虫】09_正则表达式(re.math()、re.search()、re.sub()、全局匹配函数)
- Python 语言及其应用 Chapter_7_Note 1 正则表达匹配
- 使用Python正则表达式RE从CSDN博客源代码中匹配出博客信息
- 关于python的正则匹配包re的一些经验教训
- Python: 字符串搜索和匹配,re.compile() 编译正则表达式字符串,然后使用match() , findall() 或者finditer() 等方法
- re正则在python爬虫的应用
- python正则表达式re匹配模式和特殊字符集
- Python高级——正则表达式 re模块 2.高级应用
- 正则表达式re中的贪心算法和非贪心算法 在python中的应用
- python re正则匹配网页中图片url地址
- Python3正则匹配re.split,re.finditer及re.findall函数用法详解
- python应用regex正则表达式模块re