正则表达式
动机 :
- 1.处理文本已经成为计算机主要工作内容
- 2.根据文本的内容进行固定的筛选匹配是文本处理中常用的工作之一
- 3.为了快速方便的解决上述问题,正则表达式应运而生,并且主键发展为一个单独的技术。可以被众多编程语言使用。
定义 :
- 即高级的文本模式匹配,提供了搜索和替代等功能。本质是 由一些字符和特殊符号组成的字符串。这个字符串描述了这些字符和字符的某种重复方式,按照这种方式可以匹配一个有相似特征的符合规则的字符集合。
目标 :
- 1.理解什么是正则表达式及正则表达式的用途
- 2.能够掌握正则表达式的规则和用法
- 3.能够使用python re模块进行基于正则表达式的文本操作
特点和用途:
- 使用编程进行文本的检索和修改
- 正则表达式支持语言众多,方便使用
- 正则表达式可以匹配一系列字符串而不是某一个,匹配更多样化
- 在mongo中可以存储正则表达式,也可以使用正则表达式做查找操作
- 大量使用在爬虫中用来处理html文本匹配
- django,tornado 的路由匹配
这里列举几个用正则表达式匹配具体内容的小例子
- 判断输入用户名是否合法
- 判断输入邮箱是否合法
- 判断输入手机号码是否合法
- 判断输入车牌号(包括燃油车与新能源车)是否合法
- 判断输入身份证号码是否合法
import re
msg=input("请输入:")
#用户名匹配
if re.match(r"^[a-zA-Z0-9_-]{4,16}$",msg):
print("合法")
else:
print("不合法")
#邮箱匹配
if re.match(r'^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$',msg):
print("合法")
else:
print("不合法")
#手机号匹配(目前只匹配以13/15/16/17/18开头的手机号,根据实际情况自己再加)
if re.match(r'^(13[0-9])|(15[0-9])|(16[0-9])|(17[0-9])|(18[0-9])\d{8}$',msg):
print("合法")
else:
print("不合法")
#车牌号匹配
#燃油车和新能源车牌均能匹配
if re.match(r'^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[D,F]*|[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$',msg):
print("合法")
else:
print("不合法")
#身份证号匹配
if re.match(r'^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$',msg):
print("合法")
else:
print("不合法")