python中正则表达式的默认匹配⽅式为_Python模式匹配与正
则表达式
1.1 不⽤正则表达式来匹配⽂本
假设我希望在⼀个字符串中到电话号码,电话号码的格式为三个数字,⼀个短横线,四个数字,⼀个短横线,四个数字 ⽐如:131-3310-5293和132-2670-9864
def IsTruePhoneNumber(content):
if(len(content))!=13: #⾸先判断号码长度是否超过13,算上短横线长度
return False
for i in range(0,3): #判断前三位字符是否为数字
if not content[i].isdecimal():
return False
if content[3]!='-': #判断第四位字符是否为短横线,不是则返回错误
return False
for i in range(4,8):
if not content[i].isdecimal():
return False
if content[8]!='-':
return False
for i in range(9,13):
if not content[i].isdecimal():
return False #python⾥⾯严格区分False和True的⾸字母⼤写
return True
account='Please call me at 131-3310-5293 and my another telephone number is 132-2670-9864'
for i in range(len(account)):
number=account[i:i+13]
if IsTruePhoneNumber(number):
print('Phone Number is '+number)
print('It is accomplished')
#print('There will be a piece of phonenumber:')
#print(IsTruePhoneNumber(content))
结果如图:
1.2 ⽤正则表达式查⽂本模式
正则表达式获取括号内容正则表达式,简称为regex
,是⽂本模式的描述⽅法。例如,\d 是⼀个正则表达式,表⽰⼀位数字字符,即表⽰任何⼀位 0 到 9 的数字。Python 使⽤正则表达式
\d\d\d-\d\d\d-\d\d\d\d,来匹配前⾯的函数IsTruePhoneNumber()与之相对应的同样⽂本:3 个数字、 ⼀个短横线、4个数字、1个短横线、4 个数字。所有其它字符串都不能匹配 \d\d\d-\d\d\d\d-\d\d\d\d 正则表达式。
正则表达式可以更加复杂
,添加⼀个⽤得着的功能,⽐如在⼀个模式后⾯添加花括号\d{3},意思为匹配这个模式三次,可以应⽤在配对密码⽅⾯
1.2.1创建正则表达式对象
Python中所有的正则表达式都在re模块中,所以必须先通过import来引⼊re模块
向re模块中的repile()中创建⼀个字符串作为参数来表⽰正则表达式,此时将返回⼀个regex对象,⽐如,创建⼀个regex对象来匹配上⼀个IsPhoneTRUENumber()函数
1.2.2 匹配Regex对象
Regex的research()⽅法⽤来寻与正则表达式匹配的所有对象,如果没有到,research()⽅法将返回None,显⽰错误。如果
到,search()⽅法将返回⼀个Match对象。Match对象有⼀个group()⽅法⽤来返回寻到的已匹配的⽂本
1.3 ⽤正则表达式匹配更多模式
1.3.1 利⽤括号分组
假如分离电话号码中的运营商号段,前三位可以区别是哪个运营商,电信,联通或者移动,可以将号码分为两段。正则表达式作为参数的字符串中的第⼀对括号是第 1 组,第⼆对括号是第 2 组。通过 group() ⽅法匹配对象传⼊整数1或2,就可以取得匹配⽂本的不同部分。向group()⽅法传⼊0或不传⼊参数,将返回整个匹配的⽂本。
如果想要⼀次性得到分离的两段字符串,就可以利⽤groups()⽅法,也可以采⽤两个变量来利⽤groups()⽅法分别赋值第⼀段和第⼆段
如果
需要在正则表达式中添加括号,则可以⽤转义字符\
1.3.2 利⽤管道匹配多个分组
字符
|
称为管道,⽤来匹配多个分组中的⼀个时,类似于C语⾔中的或,就可以使⽤它来进⾏此项操作,但是返回的是第⼀个匹配到的对象
也可以⽤来匹配多个模式中的⼀个,作为正则表达式的⼀部分,⽐如:everywhere,everyone,everytime,everyday。提取它们共同的前缀every(如果需要匹配换到字符,则添加倒斜杠 |)
1.3.3 利⽤问号实现选择匹配
(字符串)?字符串
为选择模式,即添加?前⾯的或者不添加问号前⾯的。?即匹配这个?前的分组零次或⼀次。⽐如:
还可以进⾏多模式匹配
1.3.4 利⽤星号实现匹配
利⽤
*
实现匹配*前⾯的分组零次或多次
1.3.5 利⽤加号实现匹配
利⽤+实现分组匹配,即+前的分组出现⼀次或多次,⾄少出现⼀次,如果未出现,则返回None
1.3.6 ⽤花括号实现匹配
花括号可以规定分组的匹配次数,不符合要求则返回空或者规定的最⼤模式匹配次数的模式,分组中只能包含要求匹配的模式,否则返回空
格式为(模式){匹配次数} ⽐如(模式){3,5}则表⽰模式匹配次数从3到5 (){,5}则表⽰模式匹配次数从0到5 (){3,}则表⽰模式匹配次数为从3到更多次数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论