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. 包含在[]中的一个或者多个字符被称为字符 ...
随机推荐
- drupal 7.23 上传中文命名文件bug
$file->filename = trim(drupal_basename($_FILES['files']['name'][$source]), '.'); //在此行下 添加以下代码即可( ...
- 测试 windows live writer
This is the first article written by the writer! wenzhaoshanda
- wcf 给net.tcp 加mex
<?xml version="1.0" encoding="utf-8" ?><configuration> <system.s ...
- 链接<a href="javascript:void(0)" />
1.<a href="#"></a>——点击链接后,页面会向上滚到页首,# 默认锚点为 #TOP 2.<a href="javascript ...
- C++ 多态性浅谈
多态:一个接口, 多种方法.程序在运行时才决定调用的函数是什么. C++多态通过 虚函数实现, 虚函数允许子类重新定义成员函数, 子类override父类. 多态与非多态的实质区别:函数地址是早绑定还 ...
- 理解Window和WindowManger
一.Window简介 作用:桌面上显示一个类似悬浮的东西. 介绍:Window是一个抽象类,实现是由PhoneWindow.WindowManager是外界访问Window的入口.但是最终实现是在Wi ...
- PHP解决网站高流量高并发问题
首先,确认服务器硬件是否足够支持当前的流量. 普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大, 那么必须首先配置一台更高性能的专用服务器才能解决问题 ,否则怎么优化都不可能彻 ...
- C# 缩放图片
using System; using System.Collections.Generic;using System.Linq;using System.Web;using System.Drawi ...
- android 代码布局 记录
1.概述 android 中大部分ui 布局是用xml 进行的,但是用代码布局调整是不可避免的.自己比较喜欢写模版,有些时候子类再继承模版时,往往有一些ui上的调整,又懒得去重写一个xml,就偷懒用代 ...
- Handler机制原理图、源码、使用!!!!!
android的消息处理机制——Looper,Handler,Message (原理图.源码) 转自:http://my.oschina.net/u/1391648/blog/282892 在开始讨 ...