python学习系列(五) --- 正则表达式
来源:互联网 发布:粤语网络课程 编辑:程序博客网 时间:2024/05/18 01:45
Compile函数
re.compile 是指用变量代表正则表达式,你可以不必重复输入相同的正则表达式。
Match函数
re.match(pattern, string, flags=0)
re.match函数返回成功,失败匹配对象则返回None。我们会group(num) orgroups()函数匹配对象来获得匹配的表达式。
#!/usr/bin/pythonimport reline = "apple is fruit "matchObj = re.match( r'(.*) is (.*?) .*', line, re.M|re.I)if matchObj: print "matchObj.group() : ", matchObj.group() print "matchObj.group(1) : ", matchObj.group(1) print "matchObj.group(2) : ", matchObj.group(2)else: print "No match!!"
运行结果
matchObj.group() : apple is fruit
matchObj.group(1) : apple
matchObj.group(2) : fruit
Search函数
re.search(pattern, string, flags=0)
#!/usr/bin/pythonimport reline = "apple is fruit "matchObj = re.search( r'(.*) is (.*?) .*', line, re.M|re.I)if matchObj: print "matchObj.group() : ", matchObj.group() print "matchObj.group(1) : ", matchObj.group(1) print "matchObj.group(2) : ", matchObj.group(2)else: print "No match!!"
matchObj.group() : apple is fruit
matchObj.group(1) : apple
matchObj.group(2) : fruit
Findall函数
#!/usr/bin/pythonimport reline = "apple is apple "matchObj = re.findall( r'apple', line, re.M|re.I)
Q:Match和search的区别
A:Match只在字符串的开头检查匹配,research只在字符串的任何位置进行搜索,也就是如果字符串的开头不是要匹配的字符串,那么就是没有匹配到。
A:Findall能找到所有的,而match和search只匹配第一个,并且得到的数据结构有所不同,match和search得到的数据结构是group(),group(i),而findall得到的是list数组。
sub函数
使用sub函数来替换字符串“hello world”中的“world”为python
import re
a = 'hello world' strinfo = re.compile('word') b = strinfo.sub('python',a) print b
当然也可以采用replace的方法
a.replace('word','python')
贪婪模式和非贪婪模式
当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。
有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。现在看看懒惰版的例子吧:
a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)
正则表达式修饰符 - 可选标志
正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:
正则表达式模式
模式字符串使用特殊的语法来表示一个正则表达式:
字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的字符串。
多数字母和数字前加一个反斜杠时会拥有不同的含义。
标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。
反斜杠本身需要使用反斜杠转义。
由于正则表达式通常都包含反斜杠,所以你最好使用原始字符串来表示它们。模式元素(如 r'/t',等价于'//t')匹配相应的特殊字符。
下表列出了正则表达式模式语法中的特殊元素。如果你使用模式的同时提供了可选的标志参数,某些模式元素的含义会改变。
正则表达式实例
字符匹配
字符类
特殊字符类
- python学习系列(五) --- 正则表达式
- python学习之(五)正则表达式
- Python学习笔记(五)正则表达式
- python学习笔记(五):正则表达式
- python学习笔记(五)文件操作、正则表达式
- Python爬虫学习纪要(五):正则表达式2
- python学习系列(六)--- 正则表达式搜索中文
- python正则表达式学习
- python正则表达式学习
- python正则表达式学习
- python正则表达式学习
- python正则表达式学习
- python正则表达式学习
- python正则表达式学习
- Python正则表达式学习
- Python正则表达式学习
- Python学习--正则表达式
- python正则表达式学习
- 【深度探索C++对象模型读书笔记】【第1章】关于对象
- RabbitMQ 使用参考
- 正则表达式获取HTML标记innerHTML
- 更改已经收货的采购订单价格
- c++中动态链接库与动态链接库的区别
- python学习系列(五) --- 正则表达式
- width:100%缩小窗口时背景图片出现空白bug
- ios页面间传递参数四种方式
- java回调简单实现
- 树的层序遍历
- 前端编码规范
- shift后门制作和禁止
- 统计Oracle数据库文件的大小
- 自学MFC一个半月,花了3天时间做了一个俄罗斯方块