摘要:你可能熟悉文本查找,即按下Ctrl-F, 输入你要查找的词。“正则表达式”是Ctrl-F的升级版本。正则表达式很有,但如果不是Python语言程序员,很少会有人了解它,尽管大多数现代文本编辑器和文字处理器都有查找和查找替换功能,可以根据正则表达式查找。正则表达式可以节约大量时间,不仅适用于软件用户,也适用于Python语言程序员。学会正则表达式,别人需要数天的繁琐工作才能解决的问题,而且别人容易出错,而你只需要击键就能解决问题。
Python语言模式匹配与正则表达式
你可能熟悉文本查找,即按下Ctrl-F, 输入你要查找的词。“正则表达式”是Ctrl-F的升级版本。正则表达式很有,但如果不是程序员,很少会有人了解它,尽管大多数现代文本编辑器和文字处理器都有查找和查找替换功能,可以根据正则表达式查找。正则表达式可以节约大量时间,不仅适用于软件用户,也适用于程序员。学会正则表达式,别人需要数天的繁琐工作才能解决的问题,而且别人容易出错,而你只需要击键就能解决问题。
下面先看不用正则表达式查找文本模式。
假设你希望在字符串中查找电话号码,你知道模式:3个数字,1个短横线,3个数字,1个短横线,再是4个数字。例如:498-553-5453。
假定我们用一个名为isPhoneNumber()函数来检查字符串是否匹配模式,它返回True或False。打开一个新的文件编辑器,输入以下内容:
def isPhoneNumber(text):
if len(text) !=12:
return False
for i in range(0,3):
if not text[i].isdecimal():
return False
if text[3]!='-':
return False
for i in range(4, 7):
if not text[i].isdecimal():
return False
if text[7] != '-':
return False
for i in range(8, 12):
if not text[i].isdecimal():
return False
return True
print('498-553-5453 is a phone number:')
print(isPhoneNumber('498-553-5453'))
print('Moshi moshi is a phone number:')
print(isPhoneNumber('Moshi moshi'))运行该程序,输出看起来像这样:
498-553-5453 is a phone number: True Moshi moshi is a phone number: False
用参数'498-553-5453'调用isPhoneNumber()函数将返回True,用参数‘Moshi moshi’将返回False,第一项测试失败了,因为不是12个字符。
必须添加更多代码,才能再更长的字符串中寻找这种文本模式。用下面的代码,替换上述代码中的4个print函数调用:
message='Call me at 498-553-5453 tomorrow.415-233-2322 is my office.'
for i in range(len(message)):
chunk=message[i:i+12]
if isPhoneNumber(chunk):
print('Phone number found:' + chunk)
print('Done')该程序运行时,输出看起来是这样:
Phone number found:498-553-5453 Phone number found:415-233-2322 Done
在这个例子中,虽然message中的字符很短,但它也可能包含上百万个字符,程序运行仍然不需要1秒钟。使用正则表达式查找电话号码的类似程序,运行也不会超过一秒钟,但是用正则表达式编写这类程序会快得多。
如有问题请加微信号:Iotek666,本微信号会不定期推送技术相关优质文章、热点资讯、视频资源及生活趣事,也很乐意与您一起交流IT知识,让我们在闲暇之余巩固一下自己的知识体系 ,扩充一下自己的知识面。快利用琐碎时间给自己充电吧!
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言Python频道!
喜欢 | 0
不喜欢 | 0
擅长针对企业软件开发的产品设计及开发的细节与流程设计课程内容。座右铭:大道至简!
已有24人表明态度,83%喜欢该老师!
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号