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

python入门系列17―——正则表达式2

2017-07-06 16:04 393 查看
欢迎前往我的个人博客

3.re.findall

findall()用于非重叠地查找某字符串中一个正则表达式模式出现的情况。

findall()和 search()相似之处在于二者都执行字符串搜索,不同之处是,findall()总返回一个列表。

如果 findall()没有找到匹配的部分,会返回空列表;

如果成功找到匹配部分,则返回所有匹配部分的列表(按从左到右出现的顺序排列)。

import re
bt = 'hi'
m = re.findall(bt, 'h hello')
print m
m = re.findall(bt, 'hi hello')
print m
m = re.findall(bt, 'abchidef ')
print m
m = re.findall(bt, 'hi shi hih')
print m
结果:

[]
['hi']
['hi']
['hi', 'hi', 'hi']


4.re.sub 和 re.subn

这2个方法是将某字符串中所有匹配正则表达式模式的部分进行替换。用来替换的部分通常是一个字符串,但也可能

是一个函数,该函数返回一个用来替换的字符串。

subn返回一个表示替换次数的数字,替换后的字符串和表示替换次数的数字作为一个元组的元素返回

import re
bt = '[0-9]'
m = re.sub(bt,'A','a1b2c3')
print m
m = re.subn(bt,'A','a1b2c3')
print m
结果:

aAbAcA
('aAbAcA', 3)


5.re.split

根据正则表达式模式分隔字符串

import re
bt = '[0-9]'
m = re.split(bt, 'a1b2c3')
print m
bt = ':'
m = re.split(':', 'str1:str2:str3')
print m
结果:

['a', 'b', 'c', '']
['str1', 'str2', 'str3']


6.finditer

搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器。

import re

p = re.compile(r'\d+')
for m in p.finditer('one1two2three3four4'):
print m.group()


7.Pattern

Pattern对象是一个编译好的正则表达式,通过Pattern提供的一系列方法可以对文本进行匹配查找。

Pattern不能直接实例化,必须使用re.compile()进行构造。

Pattern提供了几个可读属性用于获取表达式的相关信息:

pattern: 编译时用的表达式字符串。

flags: 编译时用的匹配模式。数字形式。

groups: 表达式中分组的数量。

groupindex: 以表达式中有别名的组的别名为键、以该组对应的编号为值的字典,没有别名的组不包含在内。

import re
p = re.compile('ab[cd]?', re.I)
 
print "p.pattern:", p.pattern
print "p.flags:", p.flags
print "re.I:", re.I
print "p.groups:", p.groups
print "p.groupindex:", p.groupindex
结果:

p.pattern: ab[cd]?
p.flags: 2
re.I: 2
p.groups: 0
p.groupindex: {}


8.正则表达式修饰符 - 可选标志

正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定:

re.I 使匹配对大小写不敏感

re.L 做本地化识别(locale-aware)匹配

re.M 多行匹配,影响 ^ 和 $

re.S 使 . 匹配包括换行在内的所有字符

re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.

re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

import re
m = re.match('foo', 'seaFood',re.I) # no match 匹配失败
if m is not None:
print m.group()
else:
print "匹配失败"
m = re.search('foo', 'seaFood',re.I) # search()匹配成功
if m is not None:
print m.group()
else:
print "匹配失败"
结果:

匹配失败
Foo
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python