IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]3.2.5.3 search()函数和match()函数区别

    caimouse发表于 2015-09-05 16:45:18
    love 0

    在前介绍的正则表达式里,提供了两个基本的操作函数: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 深圳



沪ICP备19023445号-2号
友情链接