- Python正則表達式(4)---字符串匹配分組
-
字符 功能 | 匹配左右任意一個表達式(或) (ab) 將括號中字符作為一個分組(與) \num 引用分組num匹配到的字符串 (?P<name>) 分組起別名 (?P=name) 引用別名為name分組匹配到的字符串 -
- 示例1:
- 需求:匹配出0-100之間的數字
-
import re ret = re.match("[1-9]?\d","8") print(ret.group()) #8 ret = re.match("[1-9]?\d","78") print(ret.group()) #78 #不正確的情況 ret = re.match("[1-9]?\d","08") print(ret.group()) #0 #修正之后 ret = re.match("[1-9]?\d$","08") if ret: print(ret.group()) else: print("不在0-100之間") #添加| ret = re.match("[1-9]?\d$|100","8") print(ret.group()) #8 ret = re.match("[1-9]?\d$|100","78") print(ret.group()) #78 ret = re.match("[1-9]?\d$|100","08") #print(ret.group()) #不在0到100之間,故錯 ret = re.match("[1-9]?\d$|100","100") print(ret.group()) #100 #運行結果 8 78 0 不在0-100之間 8 78 100
-
- 示例2:()
- 需求:匹配出163、126、qq郵箱
-
import re ret = re.match("\w{4,20}@16..com","test@163.com") print(ret.group()) #test@163.com ret = re.match("\w{4,20}@(163|126|qq)\.com","test@126.com") print(ret.group()) #test@126.com ret = re.match("\w{4,20}@(163|126|qq)\.com","test@qq.com") print(ret.group()) #test@qq.com ret = re.match("\w{4,20}@(163|126|qq)\.com","test@sina.com") if ret: print(ret.group()) else: print("不是163、126、qq郵箱") #不是163、126、qq郵箱 #運行結果 test@163.com test@126.com test@qq.com 不是163、126、qq郵箱
-
- 示例3:\
- 需求:匹配出<html>hh</html>
-
import re #能夠完成對正確的字符串的匹配 ret = re.match("[<a-zA-Z>]*\w</[a-zA-Z]*>","<html>hh</html>") print(ret.group()) #<html>hh</html> #如果遇到非正常的html格式字符串,匹配出錯 ret = re.match("[<a-zA-Z>]*\w</[a-zA-Z]*>","<html>hh</htmlbalabal>") print(ret.group()) #<html>hh</htmlbalabal> #正確的理解思路 :如果在第一對<>中是什么,按理來說后面的那對<>中就應該是什么 #通過引用分組中匹配到的數據即可,但是要注意是元字符串,即類似r""這種格式 ret = re.match(r"<([a-zA-Z]*)>\w*</\1>", "<html>hh</html>") print(ret.group()) #<html>hh</html> #因為2對<>中的數據不一致,所以匹配不出來 test_label = "<html>hh</htmlbalabala>" ret= re.match(r"<([a-zA-Z]*)>\w*</\1>",test_label) if ret: print(ret.group()) else: print("%s 這是一個不對的標簽" % test_label) #<html>hh</htmlbalabala> 這是一個不對的標簽 #運行結果 <html>hh</html> <html>hh</htmlbalabal> <html>hh</html> <html>hh</htmlbalabala> 這是一個不對的標簽
-
- 模式修正符
- re.S 讓.也可以匹配多行
- re.I 讓匹配時忽略大小寫
-