功能介绍

正则表达式描述了一种字符串匹配的模式。 可以用来查找字符、替换匹配字符、查找符合的字串等。如果正则表达式识别出一段文本或者字符串,那么称为与该文本或字符串的匹配。

使用说明

在Python中,通过导入re包的形式来使用正则表达式,实例参考如下

  1. import re #导入re包
  2. regexp = re.compile('hello') #创建正则表达式
  3. count = 0
  4. with open('demo.txt', 'r') as file: #打开文件
  5. for line in file.readlines():
  6. if regexp.search(line): #如果每行文本中符合regexp表达式,那么计数加一
  7. count += 1
  8. print(count) #打印总数

但是往往在实际的开发中,不会存在这么简单的逻辑情况,比如说,我们既想统计Hello,也想统计hello的每行出现的次数,那么以上的正则表达式则需要进行调整。

  1. regexp = re.compile('(H|h)ello') #创建正则表达式,符合Hello和hello

我们通过实例来进行正则的表达,比如,现在存在文本文件,我们需要查找该文件的每一行中,以No开始,且后面紧跟华北身份证(1开头)、华东身份证(3开头)的数据信息。

  1. #首先我们构建正则表达式 ^No(1|3)[0-9]{16}([0-9]|(X|x))
  2. #其中题目隐藏了部分信息,即No后紧跟着的是18位的华北华东身份证,其中第一位必须是1或者3,然后后面是16位数字,最后一位位数字或者X,此处X不区分大小写
  3. #构建好了正则表达式,参考以上的代码,直接修改regexp即可
  4. regexp = re.compile('^No(1|3)[0-9]{16}([0-9]|(X|x))')

正则表达式的关键在于根据业务信息,构建需要的正则表达式,构建完成后先要自己进行测试确认,避免出现错误,构建的语法再次不再赘述,可以参考推荐资料一,验证正则表达式可以参考使用推荐资料二

练习题

以上例子中的No正则表达式存在不足,我们知道身份证的第七位开始的八位数字为出生年月日,通常来说出生年与一般是1900-2020,月份也是01-12,日期一般是01-31(此处严格来说,二月有28或者29天,然后部分月份还是30天),根据以上规则,重新编写正则表达式

推荐资料