立即学习:https://edu.csdn.net/course/play/24459/296370?utm_source=blogtoedu
正则表达式
正则使用re模块
' . ':默认匹配除\n之外的任意个字符,若指定flag DOTALL,则匹配任意字符,包括换行
' ^ ':匹配字符开头,若指定flags MULTILINE 则可匹配上(r"^a","\abc\dss",flags = re.MULTILINE)
' $ ':匹配字符结尾,若指定flags MULTILINE,re.search('f00.$,'fool\fs\n',re.MULTILINE).group()
' * ':匹配*号前的字符0次或多次
' + ':匹配前一个字符1次或多次,re.findall('ab+','ab+cd+abb+bba')结果['ab','abb']
' ? ':匹配前面一个字符1次或者0次,re.srearch('b?','alex').group()匹配b 0次
' {m} ':匹配前面一个字符m次
' {n,m} ':匹配前面一个字符n到m次
' | ':匹配 | 左 或 | 右的字符,re.search('abc|ABC',abcABCD).group()
' (...) ':分组匹配
' \A ':只从字符开头匹配
' \z ':匹配字符结尾,同$
' \d ':匹配数字0-9
' \D ':匹配非数字
' \w ':匹配[A-Za-z0-9]
' \W ':匹配非[A-Za-z0-9]
' s ':匹配空白字符、\t、\n、\r
' (?P<name>...)':分组匹配加命名,re.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})).groupdict(),可以直接生成一个字典形式
匹配方式:
re.match:从头开始匹配,最开始第一个字符就需要符合匹配要求
re.search:匹配包含,只匹配一个
re.findall:把所有匹配到的字符放到列表中
re.split:以匹配到的字符当作列表分隔符
re.sub:匹配字符并替换
re.fullmatch:全部匹配