3.2.5.3 search()函数和match()函数区别

来源:互联网 发布:ios放置类游戏 知乎 编辑:程序博客网 时间:2024/06/08 10:22

在前介绍的正则表达式里,提供了两个基本的操作函数:search()match()。这两个基本的函数都是匹配正则表达式的字符串,但它们之间去匹配的模式是有一些区别的,re.match是给出的字符串的头部开始匹配,匹配成功就结束了;而re.search是从给出的字符串头部开始,只要任何位置匹配成功都找出来,这种模式跟Perl语言里缺省方式一致。

例子:

print('search() vs match()')

match = re.match('c', 'abcd')

if match:

    print(match)

else:

    print('no match')

 

match = re.search('c', 'abcd')

if match:

    print(match)

else:

    print('no search')

结果输出如下:

search() vs match()

no match

<_sre.SRE_Match object; span=(2, 3), match='c'>

 

search也可以使用正则表达式的‘^’来限定从字符串的头部进行匹配:

match = re.search('^c', 'abcd')

if match:

    print(match)

else:

    print('no search')

在这个例子里,就没有找到相应的c字符串。同时,在多行模式之下,match只匹配第一行的首部开始,但search是匹配每一行的首部,例子如下:

match = re.match('c', 'abcd\ncde', re.M)

if match:

    print(match)

else:

    print('no match')

match = re.search('^c', 'abcd\ncde', re.M)

if match:

    print(match)

else:

    print('no search')

结果输出如下:

no match

<_sre.SRE_Match object; span=(5, 6), match='c'>

 

 

蔡军生 QQ:9073204 深圳

0 1
原创粉丝点击