异常和正则day15

    技术2022-07-10  130

    异常和正则

    异常捕获

    1.什么是异常捕获

    让程序执行过程中出现异常的时候,程序不崩溃,可以继续进行 注意:不是任何时候都要使用异常捕获,是在某个位置明知可能会出现异常,又不想让程序崩溃的时候才使用

    2.异常捕获的语法

    1)语法1:可以捕获所有异常 try: 代码段1 except: 代码段2 说明: try、excpet: - 关键字,固定写法 : - 固定写法 代码段1 -try保持一个缩进的一条或多条语句;可能会出现异常的代码(需要捕获异常的代码) 代码段2 - 和excpet保持一个缩进的一条或多条语句;出现异常被捕获到了,需要执行的代码 执行过程:先执行代码段1,如果执行过程出现异常,直接执行代码段2,如果没有异常,代码段2不会执行 try: int(input()) except: print('输入有误') 语法2:针对特定的异常进行捕获 try: 代码段1 except 异常类型: 代码段2 执行过程:先执行代码段1,如果代码段1出现异常,判断出现的异常类型和except后面的异常类型是否一致,如果一致 不崩溃直接执行代码段2,如果不一致直接崩溃 语法3:同时捕获多种异常,做相同处理 try: 代码段1 except (异常类型1,异常类型2...): 代码段2 语法4:同时捕获多种异常,做不同处理 try: 代码段1 except 异常类型1: 代码段2 except 异常类型2: 代码段3 ....... # 3.finally关键字 在所有异常捕获的语法的最后边都可以添加finally关键字 try: 代码段1 except: 代码段2 finally: 代码段3 代码段3无论什么情况都会执行(代码段1无论发生什么事情)

    正则表达式

    1.什么是正则表达式

    正则表达式是一种让字符串处理更简单的工具(本质是做字符串匹配)

    2.正则表达式的语法

    re模块是python提供的专门使用正则表达式的相关函数的模块 from re import fullmatch fullmatch(正则表达式,字符串) - 让正则表达式和字符串进行匹配,如果匹配失败结果是None js的正则: /正则表达式/ python的正则: r'正则表达式' 匹配符号: 1) 普通字符 - 表示字符本身 2) . - 匹配一个任意字符 3) \w - 匹配任意一个数字、字母、下划线(针对ASCII表有效) 4) \d - 匹配一个任意数字 5) \s - 匹配一个空白字符 6) \S和\D - 大写字母个小写字母的功能相反 7) [字符集] - 匹配字符集中出现的任意一个字符 注意:一个[]只能匹配一个字符 a.[abc123] - 匹配a b c 1 2 3中任意一个字符 b.[a-z] - 匹配从a到z中的任意一个小写字母 [A-Z] - 匹配从a到z中的任意一个小写字母 [a-zA-Z] - 匹配任意一个字母 [\u4e00-\u9fa5] - 匹配一个任意中文字符 8) [^字符集] - 匹配除了中括号里面的任意字符 ''' # 匹配一个字符串:abc前面是数字、字母或者下划线 re_str = r'[0-9a-zA-Z_]abc' result = fullmatch(re_str, 'aabc') print(result) ''' 检测符号: 1) \b - 检测是否是单词边界 单词边界:字符串开头、结尾,能区分出两个不同单词的符号 注意:检测类符号不影响匹配的长度,只是在匹配结束后作进一步的检测 2) ^ - 检测^所在的位置是不是字符串开头 3) $ - 检测$所在的位置是不是字符串结尾 ''' ''' 匹配次数: 1) * - 匹配0次或多次 2) + - 匹配一次或多次 3) ? - 匹配0次或者14){N} - 匹配N次 {M,N} - 匹配M到N次 {M,} - 匹配至少M次 {,N} - 匹配0到N次 ''' # 写一个正则表达式,可以匹配任意一个整数字符串 re_str = r'[-+]?\d+' print(fullmatch(re_str, '121212')) ''' 贪婪和非贪婪: 在匹配次数不确定的情况下,匹配模式分为贪婪和非贪婪 贪婪 - 默认都是贪婪的(在能匹配到的前提下,匹配次数尽可能多) 非贪婪 - 在匹配次数不确定的时候,次数后边加?,匹配方式变成非贪婪模式,则在匹配成功的情况下,匹配次数 尽可能少 正则表达式前加(?i)表示忽略大小写 单行匹配(?s)和多行匹配(?m) 单行匹配的时候 . 可以匹配 \n ,多行匹配的时候不行 re_str = r'(?s)abc.123' print(fullmatch(re_str,'abc\n123'))

    分支和分组

    1.分支:|

    写一个正则匹配字符串:123abc 或者 456abc re_str = r'123abc|456abc' print(fullmatch(re_str, '123abc')) print(fullmatch(re_str, '456abc'))

    2.分组:()

    1)整体操作 2)重复 \M - 重复前面第M个分组匹配到的内容(M从1开始) 3)捕获 findall re_str = r'(abc){3}' print(fullmatch(re_str, 'abcabcabc')) re_str = r'(\d\d)\1abc' print(fullmatch(re_str, '1212abc'))

    转义符号:在具有特殊功能或者特殊意义的符号前加\,让功能消失(. +) 注意:独立存在有特殊功能的符号在[]中,功能会自动消失

    Processed: 0.014, SQL: 9