python re模块
常用模块findall(增则表达式,待匹配的字符串) 功能: 取所有 返回值: 列表,所有匹配到的字符串都会放到列表中findall和分组的关系
ret = re.findall(‘\d(\d)‘,‘al,b22,c345‘) print(ret) # \d\d 首先是两位数字,-- [22,34] --> (\d) 优先显示后面的数字 [2,4] ret1 = re.findall(‘\d(?:\d)‘,‘al,b22,c345‘) print(ret1) ## (?:) 取消优先显示 [22,34]
search() 功能: 只取一个 返回值: re自定义类型 re.group() search和分组的关系
#search和分组的关系 ret = re.search(‘\d(\d)‘,‘a1,b28,c33‘) print(ret.group()) # [22] print(ret.group(1)) # [1]
match() 匹配用户输入的内容时一般都是用match 功能: 从头开始匹配,如果开始部分匹配到了就是匹配成功,如果匹配到了就是匹配成功。split() 根据正则做切割
s = ‘liu123xingchen456chen789‘ ret = re.split(r‘\d+‘,s) print(ret)
sub() 替换方法 (根据正则表达式,要替换的内容,字符串,替换的次数)
ret = re.sub(r‘\d+‘,‘H‘,‘liu123xing456chen789‘,1) print(ret)
compile() 预先编译功能,预先来编译一下我们写好的正则
rule = re.compile(r‘\d+‘) ret = rule.findall(‘lxc123xing456chen789‘) print(ret) ret1 = rule.findall(r‘手机号码110110110110\n身份证号码\t110110110110110110‘) print(ret1)
finditer() 返回一个迭代器,循环取出来的是re的自定义类型,通过group() 取值,能节省内存空间
ret2 = re.findall(‘\d+‘,‘156314132165463511646431654651646‘) print(ret2) ret3 = re.finditer(‘\d+‘,‘156314132165463511646431654651646‘) for i in ret3: print(i.group())
匹配字符组 匹配所有数字: [0-9] 匹配所有小写字母: [a-z] 匹配所有大写字母: [A_Z] 匹配所有字母和数字: [0-9a-zA-Z]匹配元字符\d 匹配所以数字 == [0-9]\w [0-9a-zA-Z_]\s \t \n \s 空白符== \t \n \r 空格\D 匹配所有非数字\W 所有非数字字母下划线\S 匹配所有非空白符. 匹配所有除了换行符号的字符^ $ 匹配一个字符串的开始/匹配一个字符串的结束| 或() 分组 用来规范符号的作用域[][^a] 除了a的所有#量词#{n} 表示匹配n次#{n,} 表示匹配至少n次#{n,m} 表示匹配n-m次#? 表示0或1次#+ 1-无穷大#* 0-无穷大#量词后面的?表示惰性匹配,会在符合条件的基础上尽量少匹配
相关推荐
YENCSDN 2020-11-17
lsjweiyi 2020-11-17
houmenghu 2020-11-17
Erick 2020-11-17
HeyShHeyou 2020-11-17
以梦为马不负韶华 2020-10-20
lhtzbj 2020-11-17
夜斗不是神 2020-11-17
pythonjw 2020-11-17
dingwun 2020-11-16
lhxxhl 2020-11-16
坚持是一种品质 2020-11-16
染血白衣 2020-11-16
huavhuahua 2020-11-20
meylovezn 2020-11-20
逍遥友 2020-11-20
weiiron 2020-11-16