Python全栈最全学习之路-Python基础(十)

正则

一、正则的概念

	思考一:如何去判断一个字符串是不是手机号
	思考二:现在要求筛选出13开头的手机号怎么做呢
  • 字符串匹配
    一般我们要筛选出13开头的字符串可以如下
def phone(number):
	number = str(number)
	if len(number) == 11 and number.isdigit():
		return True
	else:
		return False

使用正则以后就要简单很多

import re
r = re.match(r'13\d{9}','13347220022')
  • 正则
    正则表达式
    正则表达式由需要匹配的字符串和一些特殊字符组成,可以在字符串当中匹配出需要查找的对象
    匹配
    通过正则表达式快捷的匹配出符合要求的特征字符串,比如利用病毒的特征值来查找文本中的病毒
    二、元字符

     思考一:正则表达式为什么如此强大呢?和字符串自带的方法有什么不同?
    
字符 作用
. 通配符,匹配任意字符,除了\n
\ 正则转义
^ 匹配字符串的开始位置,在[]中表示不取字符
$ 匹配字符串的结束位置
{} 匹配次数
* 匹配0次或多次
+ 匹配1次或多次
匹配0次或1次
[] 字符集合
() 分组匹配
或运算,分支条件
  • 通配符
    Python全栈最全学习之路-Python基础(十)_第1张图片
    通配符匹配除了换行符之外的任意字符

  • 转义符
    Python全栈最全学习之路-Python基础(十)_第2张图片
    正则中的反斜杠有其他的意义,因此要去掉字符串本身的转义,\b字符串\b表示单词边界
    Python全栈最全学习之路-Python基础(十)_第3张图片
    常见的还有这几种转义符

  • 脱字符、美元符
    在这里插入图片描述
    脱字符匹配开头,必须是某个字符开头
    在这里插入图片描述
    美元符匹配字符结尾

  • 次数匹配
    Python全栈最全学习之路-Python基础(十)_第4张图片
    大括号可以约定匹配的次数,注意0次也匹配了一次
    Python全栈最全学习之路-Python基础(十)_第5张图片
    三个次数匹配简化符号

  • 贪婪和非贪婪匹配
    在这里插入图片描述
    贪婪模式会尽可能匹配出合适字符串,会有回溯的过程
    在这里插入图片描述
    非贪婪模式,会尽可能找到最短匹配的,减少回溯

  • 集合
    Python全栈最全学习之路-Python基础(十)_第6张图片

     # 括号里面也可以放 . ? * () {} 等元字符
    

中括号是集合,主要脱字符在这里表示不取得意思

  • 分组匹配
    Python全栈最全学习之路-Python基础(十)_第7张图片
    小括号表示分组,默认是保留口号内匹配上的内容
    三、re模块

     思考一:刚才使用了那么多re模块,那么re模块还有哪些方法需要我们掌握呢?
    
  • re模块
    Python全栈最全学习之路-Python基础(十)_第8张图片
    re模块是Python中支持正则书写的模块,需要用到正则表达式通常使用re模块去进行正则匹配
    re.match函数
    re.match尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none
    re.search方法
    re.search扫描整个字符串并返回第一个成功的匹配
    re.match与re.search的区别
    re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回none,而re.search匹配整个字符串,直到找到一个匹配
    re.compile函数
    compile函数用于编译正则表达式,生成一个正则表达式(Pattern)对象,供match()和search()这两个函数使用
    findall
    在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配,则返回空列表
    注意:match和search是匹配一次,findall是匹配所有
    四、本节课总结
    1、正则表达式
    掌握:正则的概念
    2、元字符
    掌握:元字符的使用
    3、re模块
    掌握:re模块的使用
    五、上节课作业
    1、利用装饰器,记录函数的运行次数

def func(f):
    n = 0
    def func1():
        nonlocal n
        f()
        n += 1
        print(f'当前函数执行了{n}')
    return func1
@func
def test1():
    print('test1-----------------')
@func
def test2():
    print('test2-----------------')

Python全栈最全学习之路-Python基础(十)_第9张图片
2、打开一个只读文件,如果文件不存在,则去创建这个文件

try:
    f = open('test.py','r')
except Exception as e:
    print(e)
    f = open('test.py','w')
else:
    print('try里面未发生异常则执行')
finally:
    f.close()

在这里插入图片描述
六、作业
1、检查用户名是否由字母数字下划线组成(字母或下划线开头)
2、检查用户输入的邮箱号是否符合规范
3、检查用户输入的身份证号码是否符合规范
4、检查用户输入的手机号是否符合规范
5、检查用户输入的密码是否符合规范(字符或下划线开头长度8-10)
6、模拟用正则获取爬虫爬取的数据

你可能感兴趣的:(python全栈学习)