python 正则表达式 第五篇
2016-12-27 15:38
204 查看
1 Python正则表达式
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。re 模块使 Python 语言拥有全部的正则表达式功能。本章介绍re模块的match函数、search函数,sub函数。2 re.match函数
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。函数语法:
re.match(pattern, string, flags=0) |
参数 | 描述 |
Pattern | 匹配的正则表达式 |
String | 要匹配的字符串 |
Flags | 标志位,用户控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等 |
我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。
匹配对象方法 | 描述 |
group(num=0) | 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。 |
groups() | 返回一个包含所有小组字符串的元组,从1到所含的小组号。 |
import re print (re.match('www','www.hahalo.com').span()) #在起始位置匹配 print (re.match('com','www.hahalo.com')) #不在其实位置匹配 |
(0, 3) None |
import re line = "Cats are smarter than dogs" matchObj = re.match( r'(.*) are (.*?) .*', 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) print "matchObj.groups : ", matchObj.groups() else: print "No match!!" |
matchObj.group() : Cats are smarter than dogs matchObj.group(1) : Cats matchObj.group(2) : smarter matchObj.groups : ('Cats', 'smarter') |
3 re.search函数
re.search 扫描整个字符串并返回第一个成功的匹配。函数语法:
re.search(pattern, string, flags=0) |
参数 | 描述 |
Pattern | 匹配的正则表达式 |
String | 要匹配的字符串 |
Flags | 标志位,用户控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等 |
我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。
匹配对象方法 | 描述 |
group(num=0) | 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。 |
groups() | 返回一个包含所有小组字符串的元组,从1到所含的小组号。 |
import re print (re.search('www','www.hahalo.com').span()) #在起始位置匹配 print (re.search('com','www.hahalo.com').span()) #不在其实位置匹配 |
>>> (0, 3) (11, 14) |
4 re.match与re.search的区别
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。5 re.sub函数
Python 的 re 模块提供了re.sub用于替换字符串中的匹配项。语法:
re.sub(pattern, repl, string, count=0, flags=0) |
pattern : 正则中的模式字符串。
repl : 替换的字符串,也可为一个函数。
string : 要被查找替换的原始字符串。
count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
示例程序代码
import re phone='400-123-999' num=re.sub(r'\D','',phone) print '电话号码是: ',num |
>>> 电话号码是: 400123999 |
6 正则表达式修饰符 - 可选标志
正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:修饰符 | 描述 |
re.I | 使匹配对大小写不敏感 |
re.L | 做本地化识别(locale-aware)匹配 |
re.M | 多行匹配,影响 ^ 和 $ |
re.S | 使 . 匹配包括换行在内的所有字符 |
re.U | 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B. |
re.X | 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。 |
7 匹配符号说明
相关文章推荐
- Python正则表达式的用法(2. 替换;3.拆分)
- 转载:Python正则表达式的用法(1. 匹配)
- 比较详细Python正则表达式操作指南(re使用)
- python 正则表达式 概述及常用字符
- Python 正则表达式操作指南
- python正则表达式操作指南[转载]
- 在python 中使用正则表达式
- python正则表达式分析新浪网天气预报,通过pyfetion发送短信的代码
- 比较详细Python正则表达式操作指南(re使用)
- Python正则表达式(二)
- Python天天美味(15) - Python正则表达式操作指南(re使用)(转)
- 正则表达式在python中的应用
- Python用re(正则表达式)模块过滤Telnet字体颜色
- Python正则表达式的几种匹配用法
- c++正则表达式,python
- python中正则表达式与re 模块
- python中的一些正则表达式的含义
- Python正则表达式(一)
- Python正则表达式(三)
- Python正则表达式操作指南