Day18
本节内容:
1.正则表达式
一.正则表达式
1.正则表达式:
正则表达式是用来匹配字符串的
字符串匹配的方法时是完全匹配
引入正则表达式的原因是进行模糊匹配
2.元字符:
. 代指所有的单个字符除了换行符 通配符
^匹配的时候只从开始的地方进行匹配
$只从最后的位置开始匹配
* 重复匹配0-多次,重复前面的字符
+重复匹配前面的一个字符,1-多次
?重复匹配0-1次
{5}表示重复匹配前面的字符5次
{1,3}表示重复匹配前面的字符1-3次
[c,d]匹配括号中的字符任意一个元素即可
[a-z]匹配a-z中的任意一个字母,相当于 一个或的关系
[]字符集取消字符的特殊功能
^放在[]里面意味着取反
\后边跟元字符去除特殊功能
\后面跟普通字符实现特殊功能
\后面跟普通字符实现的功能:
\d匹配任意十进制,它相当于[0-9]
\D匹配任何非数字字符,它相当于[^0-9]
\s匹配任何空白字符,它相当于[\t\n\r\f\v]
\S匹配任何非空白字符
\w匹配任何字母数字字符,它相当于[a-zA-Z0-9]
\W匹配任何非字母数字字符
\b匹配一个特殊字符的一个边界,也就是指单词和空格间的位置
re.search()获取的是一个匹配的对象.
re.search().group()获取的是匹配的结果
#元字符
ret=re.findall('w..l','hello world')
print(ret)#['worl']
ret=re.findall('^h...o','hhhhhhhhhhhello')
print(ret)#[]
ret=re.findall('a..x$','aaaaaaaaaaalexss')
print(ret)#[]
#[]是或的关系,只要后面的字符串满足前面的匹配关系中的任意一个元素都开始匹配
ret=re.findall('[a-z]','abc')
print(ret)#['a', 'b', 'c']
ret=re.findall('[bc]','abc')
print(ret)#['b', 'c']
ret=re.findall('[1-9,a-z,A-Z]','12syAT')
print(ret)#['1', '2', 's', 'y', 'A', 'T']
ret=re.findall('[^t]','iu12tyAlll')#匹配除t以外的任何元素
print(ret)#['i', 'u', '1', '2', 'y', 'A', 'l', 'l', 'l']
#匹配11个数字
print(re.findall('\d{11}','abc1245688888888888888'))#['12456888888']
ret=re.findall('\sacd','aaabacd')#\s匹配空白字符
print(ret)#[]
ret=re.findall('\sacd','aaaab acd')
print(ret)#[' acd']前面有一个空格
ret=re.search('ab','aaaaaabhhhhhhhhhhab')#返回的是一个对象
print(ret)#<_sre.SRE_Match object; span=(5, 7), match='ab'>
print(ret.group())#获得第一个匹配的结果
正则表达式的方法:
Findall()所有结果返回到一个列表中
Search()返回匹配到第一个对象,对象可以调用group方法来拿取返回结果
Match()从指代字符串开始匹配,也返回匹配到的第一个对象,调用group()方法可以拿到结果
Split()
ret=re.split('[k,a]','djksal')#先根据k进行分割,['dj','sal']再根据a进行分割['dj', 's', 'l']
print(ret)#['dj', 's', 'l']
Sub()字符集的替换
ret=re.sub('a..x','s,,b','abcdaaealexklmn')#用s,,b替换a..x
print(ret)#abcdaaes,,bklmn
Compile()编译成一个规则成一个对象
浙公网安备 33010602011771号