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封装对象实现时间效果
Apr 23 Python
详解Python中的__new__、__init__、__call__三个特殊方法
Jun 02 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 Python
python机器学习之神经网络实现
Oct 13 Python
python队列Queue的详解
May 10 Python
python多进程读图提取特征存npy
May 21 Python
python实现猜数字游戏
Mar 25 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
Nov 29 Python
python groupby 函数 as_index详解
Dec 16 Python
python实现学生成绩测评系统
Jun 22 Python
Python 制作自动化翻译工具
Apr 25 Python
Python编写冷笑话生成器
Apr 20 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(1) php开发环境配置
2010/02/15 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
仿猪八戒网左下角的文字滚动效果
2011/10/28 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
使用变量动态设置js的属性名
2014/10/19 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
JavaScript轻松创建级联函数的方法示例
2017/02/10 Javascript
使用BootStrap实现标签切换原理解析
2017/03/14 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
2018/02/04 Javascript
JavaScript的查询机制LHS和RHS解析
2019/08/16 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
2019/09/12 Javascript
node.js事件轮询机制原理知识点
2019/12/22 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
python操作excel的方法
2018/08/16 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
python实现五子棋游戏
2019/06/18 Python
Django自带日志 settings.py文件配置方法
2019/08/30 Python
关于Python 常用获取元素 Driver 总结
2019/11/24 Python
Python PyInstaller安装和使用教程详解
2020/01/08 Python
Pytorch 图像变换函数集合小结
2021/02/01 Python
HTML5 history新特性pushState、replaceState及两者的区别
2015/12/26 HTML / CSS
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
院药学专业个人求职信
2013/09/21 职场文书
班组长岗位职责
2014/03/03 职场文书
《英英学古诗》教学反思
2014/04/11 职场文书
企业文明单位申报材料
2014/05/16 职场文书
有关环保的标语
2014/06/13 职场文书
学校标语大全
2014/06/19 职场文书
个人批评与自我批评总结
2014/10/17 职场文书
2014全年工作总结
2014/11/27 职场文书
《海上日出》教学反思
2016/02/23 职场文书
2016年国庆节67周年活动总结
2016/04/01 职场文书