python正则表达式练习篇2
首先生成正则表达式练习的数据:
#! /usr/bin/python
from random import randint, choice
from string import lowercase
from sys import maxint
from time import ctime doms = ('com', 'edu', 'net', 'org', 'gov') for i in range(randint(5, 10)): #generate time in string format
dtint = randint(0, maxint - 1)
dtstr = ctime(dtint) #generate user name, length:4~7
shorter = randint(4, 7)
em = ''
for j in range(shorter):
em += choice(lowercase) #generate domain name, length:shorter~12
longer = randint(shorter, 12)
dn = ''
for j in range(longer):
dn += choice(lowercase) print '%s::%s@%s.%s::%d-%d-%d' % (dtstr, em, dn, choice(doms), dtint, shorter, longer)
每次gendata.py执行都会产生5~10行的输出,在每行的输出中,我们从int类型的范围内,随机的挑选一个整数,并把这个整数换算成计算机的时间,换算的方法就是从1970年1月1日零点到现在的秒数。
random.choice()这个函数的用处就是根据指定的序列,随机返回该序列中的一个元素,在这里我们指定序列是26个小写字母,string.lowercase。
登陆名的长度为4~7个字符,虚拟邮箱的地址的域名长度在4~12个字符,但是不能短于登录名的长度。
看生成的数据:
Wed May 27 07:48:25 1981::ufbfecs@surdpbsoru.net::359768905-7-10
Thu Apr 7 09:42:29 2033::ewanfh@znkvahbcorb.edu::1996450949-6-11
Fri Feb 9 20:25:16 1979::icopo@aeslbbik.gov::287411116-5-8
Fri Aug 22 03:58:37 2031::gtigjb@oundjfu.org::1945108717-6-7
Tue Jan 23 07:34:12 1979::tatxg@nztitfrkc.net::285896052-5-9
Tue May 29 17:25:57 1973::uohh@qxhwzrpu.gov::107515557-4-8
Thu Feb 1 05:44:21 1973::quiafo@lmltvmi.gov::97364661-6-7
Sun Feb 26 04:46:30 1984::ynpvvju@ygdcbqkk.edu::446589990-7-8
利用生成的数据,提取星期:
#! /usr/bin/python import re #p = re.compile(r'^(Mon|Tue|Wed)')
p = re.compile(r'^(\w{3})') f = open('gendata.txt', 'r') for eachLine in f.readlines():
m = p.match(eachLine.strip())
if m is not None:
print m.groups() f.close()
利用生成的数据,提取后面的数字:
在这里,如果用匹配的方法,就不得不写一个正则表达式来匹配整行内容,并用子组保存我们感兴趣的那部分数据,在这里用搜索的方法更合适。
#! /usr/bin/python
import re
p = re.compile(r'\d+-\d+-\d+')
f = open('gendata.txt', 'r')
for eachLine in f.readlines():
s = p.search(eachLine.strip())
if s is not None:
print s.group()
f.close()
如果用匹配的方法,那么正则表达式要设计为:
r'.+(\d+-\d+-\d+)'
但是这样的设计是不行的,因为python默认是贪心匹配的,所以会出现这样的结果:

所以要修改正则表达式:
r'.+?(\d+-\d+-\d+)'
python正则表达式练习篇2的更多相关文章
- python正则表达式入门篇
文章来源于:https://www.cnblogs.com/chuxiuhong/p/5885073.html Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. ...
- python正则表达式练习篇
练习一: 利用who命令输出所有已经登录系统的用户的信息,并把登录名.用户登录时的电传.登录时间.登录地址利用正则表达式分割开来. 数据的格式: %who wesc console Jun 20 20 ...
- python正则表达式基础篇
1.正则表达式基础 1.1简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大 ...
- Python 正则表达式入门(中级篇)
Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...
- Python 正则表达式入门(初级篇)
Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写. 转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达 ...
- 转载 Python 正则表达式入门(中级篇)
Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...
- 转载 Python 正则表达式入门(初级篇)
Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写.转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式 ...
- Python 第四篇:生成器、迭代器、装饰器、递归函数与正则表达式
一:生成器:Generator,可以理解为是一种一个函数产生一个迭代器,而迭代器里面的数据是可以通过for循环获取的,那么这个函数就是一个生成器,即生成器是有函数生成的,创建生成器使用()表示,比如g ...
- 一篇搞定Python正则表达式
1. 正则表达式语法 1.1 字符与字符类 1 特殊字符:\.^$?+*{}[]()| 以上特殊字符要想使用字面值,必须使用\进行转义 2 字符类 1. 包含在[]中的一个或者多个字符被称为字符 ...
随机推荐
- 计算两个集合的交集数字(java)
循环判断2个数组 将相同的公共元素复制到新数组中即可 import java.util.Arrays; public class count_same_number { public static i ...
- C语言中宏定义(#define)时do{}while(0)的价值(转)
C语言中宏定义(#define)时do{}while(0)的价值 最近在新公司的代码中发现到处用到do{...}while(0),google了一下,发现Stack Overflow上早有很多讨论,总 ...
- JAVA的对象和引用——一个真实遇到的问题
最近在写一段代码的时候,不懂JAVA的我被困住了.先简单描述一下要实现的效果:我要往secretVector里塞28个byteVector,这28个byteVector分别装着10个数值,而且这28个 ...
- Unique Binary Search Trees,Unique Binary Search Trees II
Unique Binary Search Trees Total Accepted: 69271 Total Submissions: 191174 Difficulty: Medium Given ...
- 区分innerHeight与clientHeight、innerWidth与clientWidth、scrollLeft与pageXOffset等属性
window对象:(1)innerHeight属性:窗口中文档显示区域的高度,不包括菜单栏.工具栏等部分.该属性可读可写. IE不支持该属性,IE中body元素的clientHeight属性与 ...
- Servlet基础之一:Servlet基本接口与类
1.概述 Servlet API中共有5个包,约113个接口和类: javax.servlet javax.servlet.http javax.servlet.jsp javax.servlet.a ...
- sql server数据库实现保留指定位数小数的函数
有时候需要对一个特定的含有小数点的数字保留指定位数,比如"123.123600". 在数据库中以函数的形式实现如下: USE [数据库名称] GO /****** Object: ...
- Elf 32
[CentOS]安装软件:/ld-linux.so.2: ELF interpreter解决 环境: [orangle@localhost Downloads]$ uname -m&&am ...
- NFC-P2P MODE
今日看见有关国内电信业者要合组TSM (Trusted Service Manager)提供NFC 服务的新闻, 这是属于NFC 所能提供的3种Mode中的Card emulation mode (就 ...
- 进程退出前删除自身EXE
进程退出前删除自身EXE 下面的代码由Gary Nebbett写就.Gary Nebbett乃是WINDOWS NT/2000 NATIVE API REFERENCE的作者.乃NT系统一等一的高手. ...