match对象是通过正则表达式匹配成功之后返回的对象,如果不成功也会返回,不过其布尔值为False。因此,判断是否匹配成功,只要判断match对象的布尔值就可以,简单的就是使用if语句来判断。
例子:
print(‘re.split‘)
result = re.split(‘\W+‘,‘Cai, cai, cai.‘)
if result:
print(result)
match对象支持下面的方法和属性:
match.expand(template)
在模板字符串template中指定位置替换为指定分组的内容,可能过索引(\1,\2)或组名称(\g<1>, \g<name>)来引用。
例子:
print(‘match.expand‘)
pattern = re.compile(‘(?P<style>[^|]*)\|(?P<tags>[^|]*)‘)
match = pattern.match(‘OL|AAAAA‘)
print(pattern.groups)
print(pattern.groupindex)
print(match.expand(r‘这是一个测试\2,没错!‘))
输出结果如下:
match.expand
2
{‘style‘: 1, ‘tags‘: 2}
这是一个测试AAAAA,没错!
match.group([group1, ...])
返回分组中子分组的结果。如果只有一个参数,当作一个字符串返回。如果有多个参数,使用元组返回。如果没有参数输入,默认返回第一组的结果。组号的范围在[1, 99]之间。如果输入组号为负数,或者大于匹配的分组最大值,就抛出IndexError异常。
例子:
print(‘match.group‘)
pattern = re.compile(‘(?P<style>[^|]*)\|(?P<tags>[^|]*)‘)
match = pattern.match(‘OL|AAAAA‘)
print(pattern.groups)
print(pattern.groupindex)
print(match.group())
print(match.group(0))
print(match.group(1))
print(match.group(2)) #使用组序号
print(match.group(‘style‘)) #使用组名称
结果输出如下:
match.group
2
{‘tags‘: 2, ‘style‘: 1}
OL|AAAAA
OL|AAAAA
OL
AAAAA
OL
match.groups(default=None)
使用元组返回所有匹配的分组,如果有分组没有匹配,就返回None。如果有设置参数,就会使用参数来替换相应没有匹配到的分组。
例子:
print(‘match.groups‘)
pattern = re.compile(r"(\d+)\.?(\d+)?")
match = pattern.match(‘123.56‘)
print(match.groups())
print(match.groups(‘0‘))
match = pattern.match(‘123‘)
print(match.groups())
print(match.groups(‘0‘))
结果输出如下:
match.groups
(‘123‘, ‘56‘)
(‘123‘, ‘56‘)
(‘123‘, None)
(‘123‘, ‘0‘)
match.groupdict(default=None)
以字典的方式返回分组命名的匹配结果。如果没有匹配成的分组,以参数替换,如果没有参数,就默认为None替换。
例子:
print(‘match.groupdict‘)
pattern = re.compile(‘(?P<style>[^|]*)\|(?P<tags>[^|]*)‘)
match = pattern.match(‘OL|AAAAA‘)
print(pattern.groups)
print(pattern.groupindex)
print(match.groupdict())
结果输出如下:
match.groupdict
2
{‘tags‘: 2, ‘style‘: 1}
{‘tags‘: ‘AAAAA‘, ‘style‘: ‘OL‘}
match.start([group])
match.end([group])
返回匹配组的开始位置和结束位置。参数是group组号,默认为0,就所有组都返回。
例子:
print(‘match.start, match.end‘)
email = ‘9073204@vip.qq.com‘
match = re.search(‘vip.‘, email)
print(email[:match.start()] + email[match.end():])
结果输出如下:
match.start, match.end
9073204@qq.com
match.span([group])
返回匹配对象组的开始位置和结束位置(m.start(group), m.end(group)),格式是元组方式。如果没有匹配任何组返回(-1, -1)。
例子:
print(‘match.span‘)
email = ‘9073204@vip.qq.com‘
match = re.search(‘vip.‘, email)
print(email[:match.start()] + email[match.end():])
print(match.span())
结果输出如下:
print(‘match.span‘)
email = ‘9073204@vip.qq.com‘
match = re.search(‘vip.‘, email)
print(email[:match.start()] + email[match.end():])
print(match.span())
match.pos
match.endpos
在search和match里使用开始位置和结束位置。
例子:
print(‘match.pos‘)
email = ‘9073204@vip.qq.com‘
pattern = re.compile(‘vip.‘);
match = pattern.search(email, 2)
print(email[:match.start()] + email[match.end():])
print(match.pos)
print(match.endpos)
结果输出如下:
match.pos
9073204@qq.com
2
18
match.lastindex
保存最后分组的值。如果没有组,返回None。
例子:
print(‘match.lastindex‘)
pattern = re.compile(r"(\d+)\.?(\d+)?")
match = pattern.match(‘123.56‘)
print(match.groups())
print(match.lastindex)
结果输出如下:
match.lastindex
(‘123‘, ‘56‘)
2
match.re
在search和match中使用的正则表达式对象。
例子:
print(‘match.re‘)
pattern = re.compile(r"(\d+)\.?(\d+)?")
match = pattern.match(‘123.56‘)
print(match.groups())
print(match.re)
结果输出如下:
match.re
(‘123‘, ‘56‘)
re.compile(‘(\\d+)\\.?(\\d+)?‘)
match.string
传给search或match进行匹配的字符串。
例子:
print(‘match.string‘)
pattern = re.compile(r"(\d+)\.?(\d+)?")
match = pattern.match(‘123.56‘)
print(match.groups())
print(match.string)
结果输出如下:
match.string
(‘123‘, ‘56‘)
123.56
蔡军生 QQ:9073204 深圳
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/caimouse/article/details/48084421