python 正则表达式

正则

1、 匹配所有的数字[0-9]
       匹配所有的字母[a-z]
       匹配所有的大写字母 [A-Z]
       匹配所有数字字母   [0-9a-zA-Z]
 
 2、元字符
	   \d    是匹配所有数字
	   \w    是配置所有的数字字母下划线还有中文   
	   \s    是匹配所有的空白符 制表符  换行符
	   \n    匹配回车
	   \t    匹配tab
	   \D    匹配所有非数字      
	   \W    匹配 所有非数字字母 下划线
	   \S    匹配所有非空白
	   .     匹配处了换行符之外的人任意一个字符
	   ^     匹配一个字符串的开始
	   $     匹配一个字符串的结束
	   
	   [abc123] 匹配abc123 这几个字符
       
       [^abc123] 匹配除了abc123 的所有字符
	   [^  ]   匹配非空字符

	  |           或得关系        例如:alex|wusi 
 ()       用来规范字符的范围    
    注释 :^alex|alexerer$        这样写的话  alex1223445  也会匹配     
               ^(alex|alexer)$      这样写的话  alex122344  就不会在匹配了 只匹配alex  


3、 量词

		{n} 匹配n 次
		{n,} 匹配至少n次
		{n,m}  匹配n-m 次
		? 0 或者1次 
		+ 1-无穷大
		*  0-无穷大 
		
4、    匹配手机号      1[2-9]\d{9}
       匹配任意正整数     [1-9]\d*\
	   匹配任意的小数  \d+\.\d+
	   匹配整数或者小数   \d+(\.\d+)?
	   
	   
5 、 re 正则 
	import re 
 	ret= re.findall('\d','hello1234556')      ######前面是规则后面是要匹配的字符串 
 	print(ret)    ###返回结果['123456', '12334']
 	
 	ret1 = re.search('\d','hello123,word456')    ###### 只匹配从左到右第一个 匹配项
 	print(ret1)    #### 返回结果是 <re.Match object; span=(4, 5), match='1'> 为一个变量   需要用group获取值
 	print(ret1.group()) #####返回结果是1 

	上述两个的区别就是:
	import re
	phone_num = input("请输入手机号:")
	regex = r'^1[2-9]\d{9}$'

	ret = re.search(regex,phone_num)
	ret1 = re.findall(regex,phone_num)

	if ret :
    	print("合法手机号")
	else:
    	print("不是合法的手机号")
    
	#如果input  输入的是 1372345345678     使用find_all 就会显示[] 空列表
	#如果上述方式 使用的是search  就会返回None

	re.match(r‘\d+’,r'84alex')    #用match 的话 默认自带^默认就是匹配以数字给开头的,如果 匹配‘alex84’ 还匹配不到
	
 find_all(正则表达式,带匹配的字符串 )
 功能是:取所有
 返回值:列表  所有匹配到的项都会返回到列表中 
 import re
 phone_num = input("请输入手机号:")
  regex = r'^1[2-9]\d{9}$'
 ret1 = re.findall(regex,phone_num)
 print(ret1)


 search( 正则表达式,带匹配的字符串 )
 功能是: 从头开始往后找任何地方有符合条件的都返回一个
 返回值:re 自定义类型
 import re
 phone_num = input("请输入手机号:")
 regex = r'^1[2-9]\d{9}$'
 ret = re.search(regex,phone_num)
 print(ret)
 
 match(正则 表达式,带匹配的字符串)  #####匹配用户输入的时候,都用是match
 功能是: 从从头开始匹配,如果开始 匹配到了 就是匹配成功了,如果开始部门没有 匹配到,就          	   匹配失败
 返回值:re自定义类型
 
 	
 re.split(“正则”,带匹配的字串)
 ret = re.split(r'\d+',r'alexx875wusi')
 print(ret) 
 返回为:['alexx', 'wusi']    把数字给切出去了


替换方法:

re.sub( 正则 替换的后的字符串,替换前的字符串)
 ret = re.sub(r'\d+','H',r'alex345wusi23')
print(ret)

返回结果为:alexHwusiH 


re.sub( 正则 替换的字符串,替换前的字符串)
ret = re.sub(r'\d+','H',r'alex345wusi23')
print(ret)

返回结果为:('alexHwusiH', 2)   ####替换后的结果和替换的次数


正则表达式分组命名(?P<组名>正则表达式) 给这个分组内的正则表达式起一个名字
等后面匹配出完整结果之后通过.group('组名') 就可以获得这个分组中匹配的内容	 
       
例如:
  
import re
ret = re.search('\d\d','alex3714')
print(ret.group())	 

输出37

import re
ret = re.search('\d(?P<sedn>\d)','alex3714')
print(ret.group('sedn'))
 
 这样相当于给7一个sedn分组,这样输出就是7
  	   	   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值