python模块
一、python的re模块
1、正则匹配,使用re模块
2、正则表达式是一种对字符和特殊字符操作的逻辑公式,用正则表达字符来过滤的逻辑
3、re正则表达式作用:
快速高效查找和分析字符,进行匹配如:查找、比对、匹配、替换、插入、添加、删除等
二、认识正则表达式的特殊元素:
\d:数字0-9
\D:非数字
\s:空白字符
\n:换行符
\r:回车符re模块数量词匹配:
符号^:表示的匹配字符以什么开头
符号$:表示的匹配字符以什么结尾
符号:匹配前面的字符0次或n次
eg:ab* 能匹配a 匹配ab 匹配abb
符号+:匹配+前面的字符1次或n次
符号?:匹配?前面的字符0次或1次
符号{m}:匹配前一个字符m次
符号{m,n}:匹配前一个字符m到n次(包括n次),m或n可以省略,mn都是
正整数
(1)findall
从第一个字符开始查找,找到全部相关匹配为止,找不到返回一个列表[]
案例:
import re
str1="abcdeefgamn"
s=re.findall("e",str1)
print(s) #
(2)search
从第一个字符开始查找、一找到就返回第一个字符串,找到就不往下找,找不到则报错
案例:
import re
str1="abcdeefgamn"
s=re.search("a",str1)
print(s) #<re.Match object; span=(0, 1), match='a'>
3)match
从第一个字符开始匹配,如果第一个字符不是要匹配的类型、则匹配失败并报错
注意:如果规则带了'+' ,则匹配1次或者多次,无'+'只匹配一次
import re
str1="abcdeefgamn"
s=re.match("b",str1)
print(s) #None
三)实操
\d:数字0-9
案例:
import re
str1="abcd1eefga3m6n"
s=re.findall("\d",str1)
print(s) #['1', '3', '6']
\D:非数字
案例:
import re
str1="abc@#$d1eefga3m6n"
s=re.findall("\D",str1)
print(s) #['a', 'b', 'c', '@', '#', '$', 'd', 'e', 'e', 'f', 'g', 'a', 'm', 'n']
\s:空白字符
import re
str1="abcd1 eefg a3 m6n"
s=re.findall("\s",str1)
print(s) #[' ', ' ', ' ']
\n:换行符
import re
str1="abcd1 ee\nfg a3 m6\n n"
s=re.findall("\n",str1)
print(s) #['\n', '\n']
符号^:表示的匹配字符以什么开头
import re
str1="abcd"
s=re.findall("^a",str1)
print(s) #['a']
符号$:表示的匹配字符以什么结尾
import re
str1="abcd"
s=re.findall("d$",str1)
print(s) #['d']
import re
str1="abcd"
s=re.findall("a$",str1)
print(s) #[]
符号:匹配前面的字符0次或n次
import re
str1="abcd"
s=re.findall("a*",str1)
print(s) # #['a', '', '', '', '']
import re
str1="qpswabcd"
s=re.findall("a*",str1)
print(s)#['', '', '', '', 'a', '', '', '', '']
符号+:匹配+前面的字符1次或n次
import re
str1="abaaaacaad"
s=re.findall("a+",str1)
print(s) # ['a', 'aaaa', 'aa']
符号?:匹配?前面的字符0次或1次
import re
str1="abaaaacaad"
s=re.findall("a?",str1)
print(s)#['a', '', 'a', 'a', 'a', 'a', '', 'a', 'a', '', '']
import re
str1="abaaaacaad"
s=re.findall("b?",str1)
print(s)#['', 'b', '', '', '', '', '', '', '', '', '']
import re
str1="abaaaacaad"
s=re.findall("1?",str1)
print(s)#['', '', '', '', '', '', '', '', '', '', '']
符号{m,n}:匹配前一个字符m到n次(包括n次),m或n可以省略,mn都是正整数
import re
str1="aassaaabaaaacaaaaad"
s=re.findall("a{3,5}",str1)
print(s) #['aaa', 'aaaa', 'aaaaa']
\w 匹配[A-Za-z0-9]
import re
str1="aass!!aa#aa1aa1d"
s=re.findall("\w",str1)(小写w)
print(s) #['a', 'a', 's', 's', 'a', 'a', 'a', 'a', '1', 'a', 'a', '1', 'd']
import re
str1="aass!!aa#aa1aa1d"
s=re.findall("\W",str1) ( 大写W)
print(s)# ['!', '!', '#']