017#正则和异常

    技术2025-01-16  14

    一、什么是异常捕获
    让程序执行过程中出现异常的时候不崩溃可以继续运行。 注意:不是任何时候都要使用异常捕获,是在你明明知道某个位置可能会出现异常,又不想让程序崩溃的时候才使用
    二、异常捕获的语法
    语法一:获取所有异常 try: 代码段1 except: 代码段2 说明: tryexcept 关键字,固定写法 : 固定写法 代码段1try保持一个缩进的一条或者多条语句; 可能会出现异常的代码(需要捕获异常的代码) 代码段2 出现的异常被捕获到了,需要执行的代码 执行过程: 先执行代码段1,如果执行执行过程中出现异常直接执行代码段2;如果代码段1中没有异常代码段2不会执行 语法二:针对指定类型的异常进行捕获 try: 代码段1 except 异常类型: 代码段2 执行过程:先执行代码段1,如果代码段1出现异常,判断出现的异常的类型和except后面的异常类型是否一致,如果一致程序不崩溃直接执行代码段2,不一致程序直接崩溃。 语法三:同时捕获多种异常,针对不同的异常做相同的处理 try: 代码段1 except (异常类型1, 异常类型2,...): 代码段2 语法四:同时捕获多种异常,针对不同的异常做不同的处理 try: 代码段1 except 异常类型1: 代码段11 except 异常类型2: 代码段22 except 异常类型3: 代码段33
    三、正则表达式的作用和语法
    re模块:python提供的专门使用正则表达式的相关的函数的模块 作用: 正则表达式是一种让字符串处理更简单的工具(本质是做字符串匹配) 语法: fullmatch(正则表达式, 字符串) - 让正则表达式式和字符串进行完全匹配,如果匹配失败结果是None 其他re模块提供的函数的语法也相似
    四、正则表达式常用的特殊符号
    4.1 匹配符号 符号 功能 . 匹配一个任意字符 \w 匹配任意一个数字、字母或者下划线(针对ASCII码表有效)(不用) \d 匹配一个任意数字字符 \D 匹配任意一个非数字字符 \s 匹配任意一个空白字符 \S 匹配任意一个非空白字符 [字符集] 匹配字符集中出现的任意一个字符(只能匹配一个字符) [a-z] 匹配从字符a到字符z之间的任意字符 [a-zA-Z] 匹配任意一个字母 [0-9] 匹配任意一一个数字字符 [^字符集] 取任意一个不在字符集中的字符 [^\u4e00-\u9fa5] 匹配任意一个非中文字符 注意:-号的前面的字符的编码值小于后面字符的编码中 4.2 检测符号 \b 检测是否是单词的边界 单词边界:字符串开头、字符串结尾、凡是能区分两个单词的符号 ^ 检测^所在的位置是不是字符串的开头 $ 检测$所在的位置是否是字符串的结尾 注意:检测类的符号不影响匹配的长度,只是在匹配成功的时候进行检测 4.3 匹配次数 * 匹配零次或多次 + 匹配一次或者多次(至少一次) ? 匹配一次或零次 {N} 匹配N次 {M,N} 至少匹配M次,最多匹配N次 {M,} 至少匹配M次 {,N} 最多匹配N次 4.4 贪婪和非贪婪 在匹配次数不确定的情况下,匹配模式分为两种:贪婪和非贪婪 a.贪婪:默认都是贪婪的(在能匹配到的前提下匹配次数尽可能多) *+、?, {M,N}{M,}{,N} b.非贪婪:(在能匹配到的前提下匹配次数尽可能少)在匹配次数不确定的时候,次数后面加问号,匹配就是非贪婪的 *?、+?、??、{M,N}?、{M,}?、{,N}?
    五、分支和分组
    5.1 分支 符号:|(或者) 用法: from re import fullmatch re_str=r'[a-z]+|\d+|aa' print(fullmatch(re_str,'23')) 结果: <re.Match object; span=(0, 2), match='23'> 5.2 分组 符号:() 1)整体操作 from re import fullmatch re_str = r'(abc){3}' print(fullmatch(re_str, 'abcabcabc')) 结果: <re.Match object; span=(0, 9), match='abcabcabc'> 2)重复 \M 重复前面第M个分组匹配到的内容(M从1开始) from re import fullmatch re_str = r'(\d\d)-([a-z]{3})-\2-\1' print(fullmatch(re_str, '23-bnm-bnm-23')) 结果: <re.Match object; span=(0, 13), match='23-bnm-bnm-23'> 3)捕获 findall 返回一个列表 from re import findall re_str=r'\d{2}[a-z]' print(findall(re_str, '22ashg15sdsd+-58a$5')) 结果: ['22a', '15s', '58a']
    Processed: 0.010, SQL: 9