您的位置:首页 > 编程语言 > Python开发

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
标志位,用户控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等
匹配成功re.match方法返回一个匹配的对象,否则返回None。
我们可以使用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
标志位,用户控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等
匹配成功re.search方法返回一个匹配的对象,否则返回None。
我们可以使用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编程