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装饰器使用示例及实际应用例子
Mar 06 Python
PyMongo安装使用笔记
Apr 27 Python
Python实现运行其他程序的四种方式实例分析
Aug 17 Python
名片管理系统python版
Jan 11 Python
python将处理好的图像保存到指定目录下的方法
Jan 10 Python
python爬虫之验证码篇3-滑动验证码识别技术
Apr 11 Python
python实现简单日期工具类
Apr 24 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
Aug 23 Python
python内打印变量之%和f的实例
Feb 19 Python
Python流程控制语句的深入讲解
Jun 15 Python
Python代码执行时间测量模块timeit用法解析
Jul 01 Python
使用TensorBoard进行超参数优化的实现
Jul 06 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限制ip地址范围的方法
2015/03/31 PHP
linux下php上传文件注意事项
2016/06/11 PHP
阿里云PHP SMS短信服务验证码发送方法
2017/07/11 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
解析URI与URL之间的区别与联系
2013/11/22 Javascript
使用jquery.validate自定义方法实现&quot;手机号码或者固话至少填写一个&quot;的逻辑验证
2014/09/01 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
2017/03/13 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
nodejs实现的简单web服务器功能示例
2018/03/15 NodeJs
详解Vue-cli webpack移动端自动化构建rem问题
2018/04/07 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
[01:01:22]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
详解python时间模块中的datetime模块
2016/01/13 Python
查看python下OpenCV版本的方法
2018/08/03 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
2019/12/04 Python
移动HTML5前端框架—MUI的使用
2017/12/18 HTML / CSS
The Hut英国:英国领先的豪华在线百货商店
2019/07/26 全球购物
人力资源管理专业应届生求职信
2013/09/28 职场文书
夜大毕业生自我评价分享
2013/11/10 职场文书
领导班子自我剖析材料
2014/08/16 职场文书
实习生辞职信范文
2015/03/02 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
导游词之襄阳古城
2019/09/27 职场文书