day15正则表达式
-
什么时异常捕获:程序报错出现了异常
程序异常的后果:程序会直接结束,不会往后面执行
-
异常捕获
-
目的:当程序出先异常的时候,程序不崩溃继续执行后面的代码
-
什么时候需要捕获:知道某个地方出现异常,但是代码没有问题(用户的不当操作)这个时候需要异常捕获
语法1: — 捕获所有异常类型
try:
代码段1
except:
代码段2
说明:try、except – 关键字:固定写法
代码段一:需要捕获异常的代码
代码段二:捕获到异常后执行的代码
执行过程:会先执行try后面的代码。没有异常直接执行后面的其他代码(不执行代码段二);如果代码段1出席那异常,程序不崩溃,直接执行except后面的代码段2
语法2:— 捕获指定类型异常
try:
代码段1
except:异常类型
代码段2
语法3: — 同时捕获多种异常,进行相同的处理
try:
代码段1
except:(异常类型1,异常类型2…)
代码段2
语法4:
try:
代码段1
except:异常类型1
代码段11
except:异常类型2
代码段22
-
-
关键字finally
finally的存在并不影响原来异常捕获
finally后面得分代码不管try里面的代码发生什么情况都会执行,就算代码段1出现异常没有被捕获到finally后面的代码也会被执行)
正则匹配类符号
- 1.什么是正则表达式
正则表达式是让复杂的字符串处理变得更加简单的工具
#2.正则语法
fullmatch(正则表达式, 字符串) – 判断指定的字符串是否满足正则表达式的规则,如果不符合返回None
python中正则表达式式写到单引号或者双引号中’正则表达式’,js中放在两个/中 /正则/
-
普通字符
普通字符指的是除了特殊符号以外的符号
普通字符在正则中表示这个字符本身 -
特殊字符 . – 匹配任意字符
3)\d – 匹配一个任意的数字
4)\s – 匹配一个任意空白字符
空白字符:空格、\n、\t
5)\D – 匹配任意一个非数字字符
6)\S – 匹配任意一个非空白字符
7)[字符集] – 匹配字符集中任意一个字符
[\u4e00-\u9f5a] – 匹配任意一个中文
注意:1.一个中括号只能匹配到一个字符
2.减号如果在两个字符之间表示范围,在-号前面的编码值必须小于后面的编码值
3.如果减号不在两个字符之间表示本身
[adc-] 匹配其中一个 -表示本身
8)[^字符集] – 匹配不在字符集中的任意一个字符
[^abc] - 匹配除了‘a’’b‘'c’以外的任意字符
匹配次数
-
* 匹配0次或者多次
re_str = r'1[fgh]*2' result = fullmatch(re_str, '12') print(result) re_str = r'1[fgh]*2' result = fullmatch(re_str, '1fggh2') print(result)
2.+ 匹配一次或者多次
```python
re_str = r’1[fgh]+2’
result = fullmatch(re_str, ‘1f2’)
print(result)
```
-
? 匹配0次或者1次
re_str = r'1[fgh]+2' result = fullmatch(re_str, '1f2') print(result)
-
{}
''' {N} -- 匹配N次 {M,N} -- 匹配M到N次 {M,} -- 匹配至少M次 {,N} -- 最多N次 就是一个数据([]也可以)在范围内的出现次数 ''' re_str = r'a[a-z]{,5}b' result = fullmatch(re_str, 'adfhdfb') print(result)
-
贪婪和非贪婪
在匹配次数不确定的时候匹配模式分贪婪和非贪婪
(1)贪婪:在能匹配成功的前提下尽可能多的去匹配
默认情况下,所有不确定次数的匹配都是贪婪
(2)非贪婪:在能匹配成功的情况下尽可能少的去匹配
在匹配次数不定的次数后加?,就变成非贪婪模式
re_str = r’a.*b’
result = search(re_str, ‘电脑0a5555b5b手机家电bf’)
print(result)
分支和分组
分组 - 用()将正则的一部分括起来看成一个整体进行操作
re_str = r’(\d{2}[a-z]{3}){3}’
print(fullmatch(re_str, ‘22sss22sss22sss’))
用法二
在包含分组的正则中可以同通过\N来重复前面第N个分组匹配到的内容
用法三:捕获(只针对findall)
re_str = r’name:’
print(findall(re_str, ‘tel:23768, name:xiaoming, age:18岁,id:27237486; tel:72891, name:张三, age:67岁, id:23479782’))
分支 – |
re_str = ‘abc\d{3}|abc[A-Z]{3}’
print(fullmatch(re_str, ‘abcFKJ’))
re_str = ‘abc(\d{3}|[A-Z]{3})’
print(fullmatch(re_str, ‘abcAAA’))
with open(‘data.txt’, ‘r’, encoding=‘utf-8’) as f:
s = f.read()
re_str = ‘“provinceName”😦".+?")’
result = findall(re_str, s)
print(result)
转义符号
import array
正则的转义符号:在具有特殊功能或者特殊意义的符号前加,让符号原来的意义消失,表示符号本身
在具有特殊功能或者特殊意义的符号放在[]里面,
对用的功能会自动消失,例如+、?+、*、$、| 等、^(不放在最前面)