千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:北京千锋IT培训  >  技术干货  >  Python技术干货  > Python模式匹配与正则表达式

Python模式匹配与正则表达式

来源:千锋教育
发布人:wjy
时间: 2022-11-07 10:47:54

  你可能熟悉文本查找,即按下Ctrl-F, 输入你要查找的词。“正则表达式”是Ctrl-F的升级版本。正则表达式很有,但如果不是程序员,很少会有人了解它,尽管大多数现代文本编辑器和文字处理器都有查找和查找替换功能,可以根据正则表达式查找。正则表达式可以节约大量时间,不仅适用于软件用户,也适用于程序员。学会正则表达式,别人需要数天的繁琐工作才能解决的问题,而且别人容易出错,而你只需要击键就能解决问题。

  下面先看不用正则表达式查找文本模式。

  假设你希望在字符串中查找电话号码,你知道模式:3个数字,1个短横线,3个数字,1个短横线,再是4个数字。例如:498-553-5453。

Python模式匹配与正则表达式

  假定我们用一个名为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秒钟。使用正则表达式查找电话号码的类似程序,运行也不会超过一秒钟,但是用正则表达式编写这类程序会快得多。

注:本文部分文字和图片来源于网络,如有侵权,请联系删除。版权归原作者所有!此页面下方声明无效!

 

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

10年以上业内强师集结,手把手带你蜕变精英

请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通

免费领取

今日已有369人领取成功

刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取

猜你喜欢LIKE

Python模式匹配与正则表达式

2022-11-07

python基础-面向对象编程

2022-11-07

Python程序中的注释练习

2022-11-07

最新文章NEW

Python中的可变对象与不可变对象

2022-11-14

Python中布尔表达式练习

2022-11-14

如何让python代码更高效灵活

2022-11-08

相关推荐HOT

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>