1.引入案例
代码演示:
#需求:判断一个手机号码是否合法.
""
import re #regular Expession
#使用正则表达式实现上面的需求
# 需求:封装一个函数,判断手机号是否合法?
def checkPhone(phone):
if len(phone) != 11:
return "手机号码长度不符合要求!"
if phone[0] != "1":
return "手机号码不是1开头!"
if not phone.isdigit():
return "手机号码不是全部是数字"
return "手机号码格式正确"
# print(checkPhone("28617767023"))
# 正则验证手机号码是否正确
import re
print(re.search("^1\d{10}$","28617767024"))
2.概述
正则表达式【Regular Expression】,简写为regex,RE,使用单个字符串来描述一系列具有特殊格式的字符串
功能:
a.搜索
b.替换
c.匹配
使用情景:
爬虫
验证手机号,验证邮箱,密码【用户名】
常用的函数
# 1.re.match() 匹配字符串是否以指定的正则内容开头,匹配成功返回对象, 匹配失败返回None
'''
第一个参数: 正则表达式
第二个参数: 要验证的字符串
第三个参数: 可选参数,正则表达式修饰符
'''
# \d: 0-9
# +:表示出现1次或者多次
print(re.match("\d+","12345esd")) # <re.Match object; span=(0, 5), match='12345'>
print(re.match("\d+","as12345esd")) # None
'''
print(re.findall("\d+","as123kjh765lgf890"))
3.使用规则
3.1匹配单个数字或者字符
代码演示:
import re
"""
----------匹配单个字符与数字---------
. 匹配除换行符以外的任意字符
[0123456789] []是字符集合,表示匹配方括号中所包含的任意一个字符
[good] 匹配good中任意一个字符
[a-z] 匹配任意小写字母
[A-Z] 匹配任意大写字母
[0-9] 匹配任意数字,类似[0123456789]
[0-9a-zA-Z] 匹配任意的数字和字母
[0-9a-zA-Z_] 匹配任意的数字、字母和下划线
[^good] 匹配除了good这几个字母以外的所有字符,中括号里的^称为脱字符,表示不匹配集合中的字符
[^0-9] 匹配所有的非数字字符
\d 匹配数字,效果同[0-9]
\D 匹配非数字字符,效果同[^0-9]
\w 匹配数字,字母和下划线,效果同[0-9a-zA-Z_]
\W 匹配非数字,字母和下划线,效果同[^0-9a-zA-Z_]
\s 匹配任意的空白符(空格,回车,换行,制表,换页),效果同[ \r\n\t\f]
\S 匹配任意的非空白符,效果同[^ \f\n\r\t]
"""
#[] :