正則的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()搭配使用,否則會報錯。以下的寫法是錯誤的。

正則表達式之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
--------------------- 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM