正则表达式

1.什么是正则表达式

 正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

2.Python中从某个字符串中寻找特定子串或判断某个字符串是否符合某个模式的常用函数。match()、search()、findall()、finditer():

1)match
re.match(pattern, string[, flags])
从首字母开始开始匹配,string如果包含pattern子串,则匹配成功,返回Match对象,失败则返回None,若要完全匹配,pattern要以$结尾。
2)search
re.search(pattern, string[, flags])
若string中包含pattern子串,则返回Match对象,否则返回None,注意,如果string中存在多个pattern子串,只返回第一个。
3)findall
re.findall(pattern, string[, flags])
返回string中所有与pattern相匹配的全部字串,返回形式为数组。
4)finditer
re.finditer(pattern, string[, flags])
返回string中所有与pattern相匹配的全部字串,返回形式为迭代器。

若匹配成功,match()/search()返回的是Match对象,finditer()返回的也是Match对象的迭代器,获取匹配结果需要调用Match对象的group()、groups或group(index)方法。

group()、groups()与group(index)的区别,见以下连接:
————————————————
本部分内容引自CSDN博主「djskl」的原创文章
原文链接:https://blog.csdn.net/djskl/article/details/44357389

3.正则表达式匹配的特殊字符:

在这里插入图片描述‘.’用于匹配除换行符(\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。
‘(…)’用于匹配括号中的模式,可以在字符串中检索或匹配我们所需要的内容。
减号“-”的用法:在字符集[…]中表示一组字符,但是如果字符集中的字符不连续就失去了其意义;不在字符集中就表示减号。集体用法可参考正则表达式:特殊字符之“-”(减号)
小括号"()"的用法:表示的是组,具体可参考:正则表达式里的小括号(),组的概念“-”(减号)

#1.[^]:非字符集,对单个字符给出排除范围;eg:[^abc],表示非a或b或c的单个字符
#2.^:匹配字符串开头;eg:^abc,表示abc且在一个字符串的开头
#3.$:匹配字符串结尾;eg:abc$,表示abc且在一个字符串的结尾
#4.():分组标记,内部只能使用|操作符;eg:(abc)表示abc,(abc|def)表示abc、def
# 5. .:表示任何单个字符

e

4.常见例子:

 常见的正则表达式如邮编、电话号码、QQ号等,都有固定的表达式形式,建议使用可以减少出错的概率。

#  正则表达式中+的作用,表示多次匹配
import re
a='abdfef0.551234567eacef555ffsa'
b=re.findall('\d+',a)
print(b)  #输出结果:['0', '551234567', '555']
b=re.findall('\d',a)
print(b)#输出结果:['0', '5', '5', '1', '2', '3', '4', '5', '6', '7', '5', '5', '5']

#正则表达式中r的作用,表示该字符串为原生字符串,不需要转义。
str0='\\4568'
print(str0) #输出结果:\4568
str0=r'\\4568'
print(str0) #输出结果:\\4568

#匹配字符串中的小数的一些情况:
import re
a='abdfef0.551234567eacef555.6ffs88a'
b=re.findall('\d+\.\d+',a)
print(b)#输出结果:['0.551234567', '555.6']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值