python之正则表达式处理函数

python正则表达式

用于检查一个字符串是否与某种模式匹配的表达式。
在python中re模块支持该功能。

先来看re模块中正则表达式中的处理函数:

1.re.match
尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none
实例:
  	import re    #导入re模块
	str_a = '123afs456'
	pattern = '\d+'     
	ret = re.match(pattern, str_a, flags=re.I)  
	#pattern:代表要匹配的正则表达式  str_a:要匹配的字符串  flags:标志位用于控制正则表达式的匹配方式
	print(ret.group())
	group:返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
	groups:	匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。

2.re.search方法:
扫描整个字符串并返回第一个成功的匹配。
实例:
	str_a = '123afs456'
	pattern = '\w+'
	ret = re.search(pattern,str_a)
	print(ret.group())
	print(ret.span())   #获取索引位置
	运行:123afs456
			(0, 9)

re.match与re.search的区别:
	re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;
	而re.search匹配整个字符串,直到找到一个匹配。
	实例:
	line = "Cats are smarter than dogs"
	matchobj = re.match(r'dogs',line)    #match
	if matchobj:
	    print(matchobj.group())    
	else:
	    print('Not match')    #运行结果:Not match
	
	matchobj = re.search(r'dogs',line)   #search
	if matchobj:
	    print(matchobj.group())   
	else:
	    print('Not match')   #运行结果:dogs

3.re.sub
	e.sub用于替换字符串中的匹配项
	import re
	a_str = '123456789,nihao'
	ret = re.sub('\d+','test',a_str,count=0,flags=re.I)
	第一个参数:正则中的模式字符串 
	第二个参数:替换的字符串,也可以为函数
	第三个参数:要被查找替换的原始字符串
	第四个参数:模式匹配后替换的最大次数,默认0表示替换所有
	print(ret)   #运行结果:test,nihao

4.re.compile
	compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
	# 提高匹配的效率
	a_str = '13132nslvn\nVVV'
	line = re.compile(r'\d+',re.I|re.S)
	ret = line.match(a_str,0,5)       #从'0'的位置开始匹配,正好匹配
	print(ret.group())      #用于获得一个或多个分组匹配的字符串,当要获得整个匹配的子串时,可直接使用 group() 或 group(0);
	print(ret.start())  #于获取分组匹配的子串在整个字符串中的起始位置(子串第一个字符的索引),参数默认值为 0
	print(ret.end())  #用于获取分组匹配的子串在整个字符串中的结束位置(子串最后一个字符的索引+1),参数默认值为 0
	print(ret.span())  #返回 (start(group), end(group))
	运行结果:
			13132
			0
			5
			(0, 5)

5.findall
	在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
	注意: match 和 search 是匹配一次 findall 匹配所有。
	a_str = re.compile(r'\d+')    #查找数字
	ret = a_str.findall('dbfg43435d4fbdb4d53b4df')   #查找所有
	ret1 = a_str.findall('dbfg43435d4fbdb4d53b4df',0,6)  #根据范围
	ret2 = a_str.findall('dbfg43435d4fbdb4d53b4df',0,4)
	print(ret)   #['43435', '4', '4', '53', '4']
	print(ret1)  #['43']
	print(ret2)   #[]  没有匹配到返回空列表

6.finditer
	和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
	a_str = re.compile(r'\d+')
	ret = a_str.finditer('dbfg43435d4fbdb4d53b4df')
	for i in ret:   #for循环遍历
	    print(i.group())   

7.re.split
	split 方法按照能够匹配的子串将字符串分割后返回列表
	a_str = re.compile(r'\d+')   #指定规则
	ret = a_str.split('dbfg43435d4fbdb4d53b4df')   #满足的开始切
	print(ret) #返回是一个列表['dbfg', 'd', 'fbdb', 'd', 'b', 'df']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值