python 正则表达式

主宰稳场 提交于 2020-02-04 00:25:27

正则

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)   ####替换后的结果和替换的次数


		 
       
	  
	   	   	   

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!