#re模块: python中的正则表达式模块
ipmort re
#正则表达式:
元字符:
1 . 匹配除换行符以外的任意字符
2 \w 匹配字母或者数字或者下划线
3 \s 匹配任意空白字符
4 \d 匹配数字 5 \n 匹配换行符 6 \t 匹配制表符tab 7 \b 匹配一个单词的结尾 8 ^ 匹配字符串的开始 9 $ 匹配字符串的结尾 10 \W 匹配非字母或下划线或数字 11 \D 匹配非数字 12 \S 匹配非空白符 13 | 匹配|前或者后的内容 14 () 匹配括号内的表达式,也表示一个组
re模块正则表达式方法:
findall()方法:
此方法是在整个字符串中匹配指定字符或者字符串,并且将所有满足条件的结果返回到一个列表中
print(re.findall('a','abababab'))
search()方法:
此方法是在整个字符串中查找满足匹配条件的字符或者字符串,一旦找到一个就不再继续查找,并返回包含查找值的对象,可以用.group()方法进行查看
ret = re.search('a','abac')
print(ret.group())match()方法:
此方法是用来从开头位置查找是否满足匹配条件,如果没有就会返回None,如果有,则会返回一个包含查找值的对象,可以用group()方法进行查看
ret = re.match('a','abac')
print(ret.group()) #a
split()方法:
此方法用来对一个字符串进行切分
ret = re.split('[ab]', 'abcd') # 先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
print(ret) # ['', '', 'cd']
sub()以及subn()方法:
ret = re.sub('\d', '*', 'a1b2c3')#将数字替换成'*',默认替换所有的数字
print(ret) #a*b*c* ret = re.sub('\d', '*', 'a1b2c3', 1)#将数字替换成'*',参数1表示只替换1个 print(ret) #a*b2c3 ret = re.subn('\d', '*', 'a1b2c3')#将数字替换成'*',返回一个元祖(替换后的字符串,替换的次数)print(ret) #('a*b*c*', 3)
compile()方法:
此方法是先把正则表达式编译好,以方便多次使用
obj = re.compile('\d{3}') #将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字
ret = obj.search('abc123eeee') #正则表达式对象调用search,参数为待匹配的字符串 print(ret.group()) #结果 : 123finditer()方法: 此方法与findall类似,只不过返回的不是一个列表,而是一个生产器,可以用next(iter).group()来查看里面的值
ret = re.finditer('\d', 'ds3sy4784a') #finditer返回一个存放匹配结果的迭代器 print(ret) # <callable_iterator object at 0x10195f940> print(next(ret).group()) #查看第一个结果 print(next(ret).group()) #查看第二个结果 print([i.group() for i in ret]) #查看剩余的左右结果