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设计模式之抽象工厂模式
Aug 25 Python
python通过zabbix api获取主机
Sep 17 Python
让代码变得更易维护的7个Python库
Oct 09 Python
Python递归函数实例讲解
Feb 27 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
May 13 Python
Python字典对象实现原理详解
Jul 01 Python
python 一个figure上显示多个图像的实例
Jul 08 Python
pytorch 实现查看网络中的参数
Jan 06 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
Jan 08 Python
简单介绍一下pyinstaller打包以及安全性的实现
Jun 02 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
Aug 28 Python
Python爬虫之Selenium实现关闭浏览器
Dec 04 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
mysql5详细安装教程
2007/01/15 PHP
php 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
Symfony数据校验方法实例分析
2015/01/26 PHP
smarty自定义函数用法示例
2016/05/20 PHP
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
玩转jQuery按钮 请告诉我你最喜欢哪些?
2012/01/08 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
javascript标签在页面中的位置探讨
2013/04/11 Javascript
jQuery动画效果-slideUp slideDown上下滑动示例代码
2013/08/28 Javascript
JavaScript让网页出现渐隐渐显背景颜色的方法
2015/04/21 Javascript
JQuery核心函数是什么及使用方法介绍
2016/05/03 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
node.js支持多用户web终端实现及安全方案
2017/11/29 Javascript
使用vue打包时vendor文件过大或者是app.js文件很大的问题
2018/06/29 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
Vue源码解析之数组变异的实现
2018/12/04 Javascript
新手如何快速理解js异步编程
2019/06/24 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
2018/01/20 Python
python下载库的步骤方法
2019/10/12 Python
介绍一下XMLHttpRequest对象
2012/02/12 面试题
小学毕业家长寄语
2014/01/19 职场文书
2014年计算机专业个人自我评价
2014/01/19 职场文书
怎样写好创业计划书的内容
2014/02/06 职场文书
护士试用期自我鉴定
2014/02/08 职场文书
党的群众路线教育实践活动批评与自我批评
2014/02/16 职场文书
小组口号大全
2014/06/09 职场文书
批评与自我批评总结
2014/10/17 职场文书
2014年护理部工作总结
2014/11/14 职场文书
中学生自我评价范文
2015/03/03 职场文书
创业计划书介绍
2019/04/24 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python
Python实现简繁体转换
2021/06/07 Python