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实现对PPT文件进行截图操作的方法
Apr 28 Python
python 时间戳与格式化时间的转化实现代码
Mar 23 Python
python实现字典(dict)和字符串(string)的相互转换方法
Mar 01 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
Nov 30 Python
对python For 循环的三种遍历方式解析
Feb 01 Python
python3爬虫学习之数据存储txt的案例详解
Apr 24 Python
Ubuntu下Anaconda和Pycharm配置方法详解
Jun 14 Python
使用APScheduler3.0.1 实现定时任务的方法
Jul 22 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
Python数据结构dict常用操作代码实例
Mar 12 Python
Python使用Web框架Flask开发项目
Jun 01 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
中东人咖啡哲学
2021/03/03 咖啡文化
crontab无法执行php的解决方法
2016/01/25 PHP
php实现xml转换数组的方法示例
2017/02/03 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
2017/02/14 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
js实现图片无缝滚动特效
2020/03/19 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
2016/02/15 Javascript
JS实现的表格行上下移动操作示例
2016/08/03 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
详谈JavaScript的闭包及应用
2017/01/17 Javascript
Vue2.0用 watch 观察 prop 变化(不触发)
2017/09/08 Javascript
微信小程序模板(template)使用详解
2018/01/31 Javascript
jQuery实现滑动开关效果
2020/08/02 jQuery
ant design vue中日期选择框混合时间选择器的用法说明
2020/10/27 Javascript
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
检测用户浏览器是否支持CSS3的方法
2009/08/29 HTML / CSS
美国知名艺术画网站:Art.com
2017/02/09 全球购物
英国假睫毛购买网站:FalseEyelashes.co.uk
2018/05/23 全球购物
Structs界面控制层技术
2013/10/11 面试题
校庆标语集锦
2014/06/25 职场文书
幼儿园园长新年寄语2015
2014/12/08 职场文书
幼儿园教师求职信
2015/03/20 职场文书
开会通知短信大全
2015/04/20 职场文书
培训计划通知
2015/07/15 职场文书
酒店厨房管理制度
2015/08/06 职场文书
关于做家务的心得体会
2016/01/23 职场文书