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增量循环删除MySQL表数据的方法
Sep 23 Python
使用 Python 实现微信公众号粉丝迁移流程
Jan 03 Python
python构建深度神经网络(续)
Mar 10 Python
python中利用h5py模块读取h5文件中的主键方法
Jun 05 Python
pandas 实现字典转换成DataFrame的方法
Jul 04 Python
让你Python到很爽的加速递归函数的装饰器
May 26 Python
python标准库sys和OS的函数使用方法与实例详解
Feb 12 Python
python numpy生成等差数列、等比数列的实例
Feb 25 Python
Python 列表反转显示的四种方法
Nov 16 Python
python3实现飞机大战
Nov 29 Python
解决virtualenv -p python3 venv报错的问题
Feb 05 Python
代码复现python目标检测yolo3详解预测
May 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
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
PHP递归复制、移动目录的自定义函数分享
2014/11/18 PHP
extjs中grid中嵌入动态combobox的应用
2011/01/01 Javascript
jquery实现的一个简单进度条效果实例
2014/05/12 Javascript
常用的JS验证和函数汇总
2014/12/23 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
微信小程序 简单教程实例详解
2017/01/13 Javascript
Ionic2调用本地SQlite实例
2017/04/22 Javascript
js下拉菜单生成器dropMenu使用方法详解
2017/08/01 Javascript
轻松玩转BootstrapTable(后端使用SpringMVC+Hibernate)
2017/09/06 Javascript
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
vue.js实现的全选与全不选功能示例【基于elementui】
2018/12/03 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
JS开发常用工具函数(小结)
2019/07/04 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
Python实现的拉格朗日插值法示例
2019/01/08 Python
Python3.5集合及其常见运算实例详解
2019/05/01 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
python 视频逐帧保存为图片的完整实例
2019/12/10 Python
Matplotlib使用字符串代替变量绘制散点图的方法
2020/02/17 Python
英国赛车、汽车改装和摩托车零件购物网站:Demon Tweeks
2018/10/29 全球购物
北京天润融通.net面试题笔试题
2012/02/20 面试题
Linux的主要特性
2016/09/03 面试题
对象的序列化(serialization)类是面向流的,应如何将对象写入到随机存取文件中
2015/06/22 面试题
精选干货:Java精选笔试题附答案
2014/01/18 面试题
总经理助理岗位职责
2013/11/08 职场文书
司机辞职报告范文
2014/01/20 职场文书
《小草和大树》教学反思
2014/02/16 职场文书
群众路线领导对照材料
2014/08/23 职场文书
pandas中DataFrame检测重复值的实现
2021/05/26 Python