python正則表達式之re.match()與re.search()的用法及區別
1、re.match()的用法
re.match()方法是從起始位置開始匹配一個模式,匹配成功返回一個對象,未匹配成功返回None。
語法:
re.match(pattern, string, flags=0)
參數說明:
- pattern:匹配的正則表達式;
- string:要匹配的字符串;
- flags:標志位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等;
示例如下:
#!/usr/bin/env python # -*- coding:utf-8 -*- import re if __name__ == '__main__': # 匹配模式 test_pattern = r"\d{2}年" # 待匹配的字符串 test = "18年2019年2020年" print(re.match(test_pattern, test).group())
輸出:
18年
Process finished with exit code 0
若將匹配模式改成:
#!/usr/bin/env python # -*- coding:utf-8 -*- import re if __name__ == '__main__': # 匹配模式 test_pattern = r"\d{4}年" # 待匹配的字符串 test = "18年2019年2020年" print(re.match(test_pattern, test))
則返回結果為:
None
Process finished with exit code 0
這是因為re.match()僅從頭開始匹配,由於起始位置處未找到符合匹配模式的內容,返回None。
2、re.search()的用法
re.search()方法是掃描整個字符串內進行模式匹配,隻要找到第一個匹配就返回,如果字符串沒有匹配,則返回None。
語法:
re.search(pattern, string, flags=0)
參數說明:
- pattern:匹配的正則表達式;
- string:要匹配的字符串;
- flags:標志位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等;
示例如下:
#!/usr/bin/env python # -*- coding:utf-8 -*- import re if __name__ == '__main__': # 匹配模式 test_pattern = r"\d{4}年" # 待匹配的字符串 test = "18年2019年2020年" print(re.search(test_pattern, test).group())
輸出:
2019年
Process finished with exit code 0
這是因為re.search()掃描整個字符串,找到符合匹配模式的第一個匹配就返回瞭。
3、re.match()與re.search()的區別
re.match()方法要求必須從字符串的開頭進行匹配,如果字符串開頭不符合模式規則,整個匹配就失敗瞭,函數返回None;
re.search()並不要求必須從字符串的開頭進行匹配,而是掃描整個字符串,直到找到第一個匹配。
到此這篇關於python正則表達式之re.match()與re.search()的用法及區別的文章就介紹到這瞭,更多相關python re.match()與re.search()內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python正則表達式re.group()用法
- Python3 re.search()方法的具體使用
- Python使用re模塊實現正則表達式操作指南
- python中對正則表達式re包的簡單引用方式
- python正則表達式re.match()匹配多個字符方法的實現