正则表达式match()与search()的区别

正则表达式之re.match()

import re


def main():
    username = 'jerry_friend'
    m = re.match(r'\w{8,20}', username)
    print(m)
    print(m.span())  # span(),如果匹配值成功,则返回匹配成功的下标 
    print(m.group())  # group(), 匹配成功,返回匹配成功后的部分


if __name__ == '__main__':
    main()

# <_sre.SRE_Match object; span=(0, 12), match='jerry_friend'>
# (0, 12)
# jerry_friend

注意:re.match()函数只检测RE是不是在string的开始位置匹配,也就是说match()只有在0位置匹配成功的话才有返回, 如果不是开始位置匹配成功的话,match()就返回none, 不能和span()、group()搭配使用,否则会报错。以下的写法是错误的。

import re


def main():
    username = '#jerry_friend'
    m = re.match(r'\w{8,20}', username)
    print(m)
    print(m.span())
    print(m.group())


if __name__ == '__main__':
    main()

下面的程序也会报错,那是应为能匹配的只有‘jerry’,总共匹配了5次,然而正则表达式中要求匹配8到20次,所以匹配的结果返回的是None。

import re


def main():
    username = 'jerry#friend'
    m = re.match(r'\w{8,20}', username)
    print(m)
    print(m.span())
    print(m.group())


if __name__ == '__main__':
    main()

正则表达式之re.search()

注意:search()会扫描整个string查找匹配;search()可以不从0位置开始匹配,这就是和match()的区别。以上的‘username = #jerry_friend’,如果选择使用search(),那么是不会返回None的。

import re


def main():
    username = '#jerry_friend'
    m = re.search(r'\w{8,20}', username)
    print(m)
    print(m.span())
    print(m.group())


if __name__ == '__main__':
    main()
#<_sre.SRE_Match object; span=(1, 13), match='jerry_friend'>
#(1, 13)
#jerry_friend
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值