匹配密码
保证其中包含大小写字母、数字、ascii码中存在的特殊字符,长度大于8位
概念
“正则表达式,又称规则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或re),是计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本”
re.match函数
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
re.match(pattern, string, flags=0)
pattern是匹配的正则表达式,string是用于匹配的字符串。flag是标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
匹配成功re.match方法返回一个匹配的对象,否则返回None。
Match对象的**group(0)**用于返回匹配的整个字符串,**span()**方法用于以元祖形式返回匹配的起始位置和结束位置。
>>> m = r'T[io]+m'
>>> s4 = 'Timooooo'
>>> re.match(m,s4).group(0)
'Tim'
>>> s5 = 'Timooom'
>>> re.match(m,s5).group(0)
'Tim'
正则表达式为r’T[io]+m’,最前面的T和最后面的m就不讲了,大家一看便知,我们重点讲一下中间的 [io]+,[io]表示匹配的字符可以是中括号中的任意一个i或o,而后面跟着的+号表示可以对[io]匹配一次或多次。所以只要满足这一条件的字符串都是可以被匹配的。
>>> m=r'[a-zA-Z]+'
>>> re.match(m,'DAKSHGYSGDFScsdf').group(0)
'DAKSHGYSGDFScsdf'
‘.’用于匹配除换行符(\n)之外的所有字符。
‘^’用于匹配字符串的开始,即行首。
‘$’用于匹配字符串的末尾(末尾如果有换行符\n,就匹配\n前面的那个字符),即行尾。
‘*’用于将前面的模式匹配0次或多次(贪婪模式,即尽可能多的匹配)
‘+’用于将前面的模式匹配1次或多次(贪婪模式)
‘?’用于将前面的模式匹配0次或1次(贪婪模式)
‘*?,+?,??’即上面三种特殊字符的非贪婪模式(尽可能少的匹配)。
‘{m,n}’用于将前面的模式匹配m次到n次(贪婪模式),即最小匹配m次,最大匹配n次。
‘{m,n}?’即上面‘{m,n}’的非贪婪版本。
‘\’:’'是转义字符,在特殊字符前面加上\,特殊字符就失去了其所代表的含义,比如+就仅仅代表加号+本身。
‘[]’用于标示一组字符,如果是第一个字符,则标示的是一个补集。比如[0-9]表示所有的数字,[0-9]表示除了数字外的字符。
‘|’比如A|B用于匹配A或B。
‘(…)’用于匹配括号中的模式,可以在字符串中检索或匹配我们所需要的内容。
re.search
re.search 扫描整个字符串并返回第一个成功的匹配。
re.search(pattern, string, flags=0)
print(re.search('www', 'www.runoob.com').span()) # 在起始位置匹配
print(re.search('com', 'www.runoob.com').span()) # 不在起始位置匹配
(0, 3)
(11, 14)
re.match与re.search的区别
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
re.findall
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
>>> a = 'ab23c7d89s'
>>> m = r'[0-9]+'
>>> num = re.findall(m,a)
>>> print(num)
['23', '7', '89']