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之集合的关系
Sep 24 Python
使用Python发送邮件附件以定时备份MySQL的教程
Apr 25 Python
《Python学习手册》学习总结
Jan 17 Python
10招!看骨灰级Pythoner玩转Python的方法
Apr 15 Python
numpy.where() 用法详解
May 27 Python
Python图像处理库PIL中图像格式转换的实现
Feb 26 Python
在python tkinter界面中添加按钮的实例
Mar 04 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
Python能做什么
Jun 02 Python
python文件读取失败怎么处理
Jun 23 Python
Python基于gevent实现文件字符串查找器
Aug 11 Python
python集合的新增元素方法整理
Dec 07 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使用xmllint命令处理xml与html的方法
2014/12/15 PHP
实现PHP框架系列文章(6)mysql数据库方法
2016/03/04 PHP
PHP字符串中抽取子串操作实例分析
2019/06/22 PHP
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
合并table相同单元格的jquery插件分享(很精简)
2011/06/20 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
JavaScript微信定位功能实现方法
2016/11/29 Javascript
Javascript中字符串和数字的操作方法整理
2017/01/22 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
Vue 实时监听窗口变化 windowresize的两种方法
2018/11/06 Javascript
使用vue实现各类弹出框组件
2019/07/03 Javascript
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
Vue基于iview table展示图片实现点击放大
2020/08/05 Javascript
VUE实现吸底按钮
2021/03/04 Vue.js
[01:58]DOTA2上海特级锦标赛现场采访:RTZ这个ID到底好不好
2016/03/25 DOTA
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
Python编程之属性和方法实例详解
2015/05/19 Python
详解Python的Django框架中的中间件
2015/07/24 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
2019/12/19 Python
postman和python mock测试过程图解
2020/02/22 Python
实例教程 利用html5和css3打造一款创意404页面
2014/10/20 HTML / CSS
医药营销专业个人自荐信
2013/09/29 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
群众路线对照检查材料
2014/09/22 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
工作检讨书大全
2015/01/26 职场文书
2015年团支书工作总结
2015/04/03 职场文书
沂蒙六姐妹观后感
2015/06/08 职场文书
2015年学校总务工作总结
2015/07/20 职场文书
幼儿园迎新生欢迎词
2015/09/30 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书