更多课程 选择中心


Python培训

400-996-5531

Python 模式匹配与正则表达式

  • 发布:考拉
  • 来源:程序员考拉
  • 时间:2018-03-08 15:11

你可能熟悉文本查找,即按下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(47):
      if not text[i].isdecimal():
          return False       if text[7] != '-':
          return False   for i in range(812):
      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秒钟。使用正则表达式查找电话号码的类似程序,运行也不会超过一秒钟,但是用正则表达式编写这类程序会快得多。


预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:手把手教你用Python创建微信聊天机器人
下一篇:Centos7安装Python3图文教程

Python IDE推荐7个你可能会错过的Python IDE

Python面试题之Python中爬虫框架或模块的区别

2021年Python面试题及答案汇总详解

python数据分析,你需要这些工具

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省