python 正则表达式

匹配密码

保证其中包含大小写字母、数字、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']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值