python re正则表达式模块(Regular Expression)


Posted in Python onJuly 16, 2014

模块的的作用主要是用于字符串和文本处理,查找,搜索,替换等

复习一下基本的正则表达式吧

 .:匹配除了换行符以为的任意单个字符

 *:匹配任意字符,一个,零个,多个都能匹配得到 俗称贪婪模式

+:匹配位于+之前的一个或者多个字符

 |:匹配位于|之前或者之后的字符

 ^:匹配行首

 $:匹配行尾

 ?:匹配位于?之前的零个或者一个字符,不匹配多个字符

 \:表示 \ 之后的为转义字符

 []:匹配[]之中的任意单个字符,[0-9]表示匹配0到9任意一个数字

 ():将位于()之内的的内容当作一个整体

 {}:按{}中的次数进行匹配,100[0-9]{3}表示在100之后任意匹配一个3位数(100-999)

python中以\开头的元字符:

特殊序列符号 意义
\A 只在字符串开始进行匹配
\Z 只在字符串结尾进行匹配
\b 匹配位于开始或结尾的空字符串
\B 匹配不位于开始或结尾的空字符串
\d 相当于[0-9]
\D 相当于[^0-9]
\s 匹配任意空白字符:[\t\n\r\r\v]
\S 匹配任意非空白字符:[^\t\n\r\r\v]
\w 匹配任意数字和字母:[a-zA-Z0-9]
\W 匹配任意非数字和字母:[^a-zA-Z0-9]

正则表达式语法表

语法 意义 说明
"." 任意字符
"^" 字符串开始 '^hello'匹配'helloworld'而不匹配'aaaahellobbb'
"$" 字符串结尾 与上同理
"*"  0 个或多个字符(贪婪匹配) 匹配chinaunix
"+" 1 个或多个字符(贪婪匹配) 与上同理
"?" 0 个或多个字符(贪婪匹配) 与上同理
*?,+?,?? 以上三个取第一个匹配结果(非贪婪匹配) 匹配
{m,n} 对于前一个字符重复m到n次,{m}亦可 a{6}匹配6个a、a{2,4}匹配2到4个a
{m,n}? 对于前一个字符重复m到n次,并取尽可能少 ‘aaaaaa'中a{2,4}只会匹配2个
"\\" 特殊字符转义或者特殊序列
[] 表示一个字符集 [0-9]、[a-z]、[A-Z]、[^0]
"|" A|B,或运算
(...) 匹配括号中任意表达式
(?#...) 注释,可忽略
(?=...) Matches if ... matches next, but doesn't consume the string. '(?=test)'  在hellotest中匹配hello
(?!...) Matches if ... doesn't match next. '(?!=test)'  若hello后面不为test,匹配hello
(? Matches if preceded by ... (must be fixed length). '(?
(? Matches if not preceded by ... (must be fixed length). '(?

匹配的标志和含义

标志 含义
re.I 忽略大小写
re.L 根据本地设置而更改\w,\W,\b,\B,\s,\S的匹配内容
re.M 多行匹配模式
re.S 使“.”元字符匹配换行符
re.U 匹配Unicode字符
re.X 忽略需要匹配模式中的空格,并且可以使用"#"号注释

文本内容(提取Linux下的password文件)

man:x:6:12:man:/var/cache/man:/bin/nologin

re模块中有3个搜索函数,每个函数都接受3个参数(匹配模式,要匹配的字符串,进行匹配的标志),如果匹配到了就返回一个对象实例,么有就返会None.

findall():用于在字符串中查找符合正则表达式的字符串,并返回这些字符串的列表

search():搜索整个字符串,返回对象实例

match():只从第一个字符开始匹配,后面的不再匹配,返回对象实例

lovelinux@LoveLinux:~/py/boke$ cat text 
man:x:6:12:man:/var/cache/man:/bin/sh
lovelinux@LoveLinux:~/py/boke$ cat test.py
#/usr/bin/env python
#coding:utf-8
import re
with open('text','r') as txt:
 f = txt.read()
 print re.match('bin',f)
 print re.search('bin',f).end() 
lovelinux@LoveLinux:~/py/boke$ python test.py 
None
34
lovelinux@LoveLinux:~/py/boke$ vim test.py
lovelinux@LoveLinux:~/py/boke$ python test.py 
None
<_sre.SRE_Match object at 0x7f12fc9f9ed0>

返回是对象实例有2个方法,

start():返回记录匹配到字符的开始索引 

end():返回记录匹配到字符的结束索引

lovelinux@LoveLinux:~/py/boke$ python test.py 
None
31
34
lovelinux@LoveLinux:~/py/boke$ cat test.py 
#/usr/bin/env python
#coding:utf-8
import re
with open('text','r') as txt:
 f = txt.read()
 print re.match('bin',f)
 print re.search('bin',f).start()
 print re.search('bin',f).end()
Python 相关文章推荐
python读取Android permission文件
Nov 01 Python
python使用win32com在百度空间插入html元素示例
Feb 20 Python
python继承和抽象类的实现方法
Jan 14 Python
使用Python抓取模板之家的CSS模板
Mar 16 Python
python通过微信发送邮件实现电脑关机
Jun 20 Python
对Python3+gdal 读取tiff格式数据的实例讲解
Dec 04 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
Dec 20 Python
python利用thrift服务读取hbase数据的方法
Dec 27 Python
Python实现的大数据分析操作系统日志功能示例
Feb 11 Python
基于Python中isfile函数和isdir函数使用详解
Nov 29 Python
python二维键值数组生成转json的例子
Dec 06 Python
django model object序列化实例
Mar 13 Python
Web服务器框架 Tornado简介
Jul 16 #Python
高性能web服务器框架Tornado简单实现restful接口及开发实例
Jul 16 #Python
Django在Win7下的安装及创建项目hello word简明教程
Jul 14 #Python
python django集成cas验证系统
Jul 14 #Python
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
Jul 14 #Python
用python + openpyxl处理excel2007文档思路以及心得
Jul 14 #Python
Python库urllib与urllib2主要区别分析
Jul 13 #Python
You might like
php模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
php教程之phpize使用方法
2014/02/12 PHP
js小技巧--自动隐藏红叉叉
2007/08/13 Javascript
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
在表单提交前进行验证的几种方式整理
2013/07/31 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
2013/12/19 Javascript
jquery实现红色竖向多级向右展开的导航菜单效果
2015/08/31 Javascript
express文件上传中间件Multer详解
2016/10/24 Javascript
Angularjs 动态添加指令并绑定事件的方法
2017/04/13 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
react 国际化的实现代码示例
2018/09/14 Javascript
[38:30]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场2
2014/05/24 DOTA
python代码实现ID3决策树算法
2017/12/20 Python
python获取url的返回信息方法
2018/12/17 Python
Python使用paramiko操作linux的方法讲解
2019/02/25 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
Python中生成一个指定长度的随机字符串实现示例
2019/11/06 Python
Python API自动化框架总结
2019/11/12 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
Python原始套接字编程实例解析
2020/01/29 Python
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
斯巴达比赛商店:Spartan Race
2019/01/08 全球购物
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
会计专业毕业生推荐信
2013/11/05 职场文书
简历中个人自我评价范文
2013/12/26 职场文书
计算机网络及管理学专业求职信
2014/06/05 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
营销总监岗位职责
2014/09/16 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书
校运会宣传稿大全
2015/07/23 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
2019自荐信该如何写呢?
2019/07/05 职场文书
Golang 实现WebSockets
2022/04/24 Golang