文章目录
以下所有的知识都是在慕课网的七月老师课上的内容,这边只充作笔记,以便日后遗忘时查看,并无其他商业需求。
正则表达式
re是Python内置对正则表达式操作的类库,通过re.findall可以对正则表达式进行操作
元字符与普通字符
\d 这种就是元字符, “Python”这种就是普通字符,\d表示数字字符,\D表示非数字字符,大写的元字符是小写元字符的补集
字符集
【】表示一个字符集,【cf】表示匹配c或者f字符
字符集取反
字符集取反加上 ^ 就好了,【 ^ cdf】表示不是cfd的字符
字符集的简写
如果你想匹配cdef这些连续的字符,可以简写成【c-f】就行了
概括字符集(是七月老师自己定义的一个概念)
\d匹配数字字符
\D匹配非数字字符
\d也可以用【0-9】来表示
\D也可以用【^0-9】来表示
\w是匹配所以的字母和数字和下划线
\w也可以用【A-Za-z0-9_】来表示
\W匹配不是字母和数字和下划线的字符
\s匹配空白字符
\S匹配非空白字符
点号 . 是匹配除了换行符\n以外所以字符
数量词
数量词用{}来表示,里面表示重复的次数,{3,6}表示次数可以重复3到6次
贪婪与非贪婪
在Python中,正则表达式的数量词是贪婪的属性
所以数量词匹配3次以后并不会认为匹配已经结束了,而是尽可能的匹配更多的字符。
{3,6}?是非贪婪匹配,在数量词后面加一个问号
由上图可以看到,{3.6}?这样的写法和{3}的作用是一样的,因为都是只匹配三个字符了
匹配0次1次或者无限多次
1.星号号表示前面一个字符匹配0次或者无限多次,python星号 这个正则表达式表示最后一个n字符可以匹配0次或者无数次
2.+号表示匹配一次或者无限多次
3.?号表示匹配0次或者1次
边界匹配符
上面的代码表示匹配4到8位数字,多于8位或者小于4位都不能匹配,但如果不加上边界匹配符,多于8位的数字也会匹配的到
^表示开始位置
$表示结束位置
组
用括号括起来表示一组
括号里面的字符是且关系,而【】中括号是表示或关系
匹配模式参数
re.findall还有第三个参数,这个参数表示匹配的模式
re.I表示忽略大小写,所以即使是c#也能匹配到C#
想匹配多个模式的话用 | 隔开就好了
re.S表示 点号 . 匹配所有字符,包括\n
re.sub正则替换
第一个参数是正则表达式
第二个参数是替换的字符
第三个参数是将要替换原字符
第四个参数是最大替换次数,0表示匹配无数次,1表示替换一次
替换字符串还有一个Python中内置的函数 replace 返回值是被替换成功的字符串
re.sub的第二个参数是可以传递一个函数的
而这个函数返回的字符串将是替换的字符
这个函数的值value不是一个字符串,而是一个对象,这个对象除了有这个字符串是什么之外,还告诉我们这个要替换的字符串在原字符串的位置,(6,8)表示C#字符串前面还有6个字符,8表示到所以8结束,所以替换字符的位置是7、8
获得这个对象里面的字符串是通过.group字段来获取
search与match函数
search与match 和findall最大的不同,就是他们都只会匹配一次,而且findall的返回结果是一个列表,而search与match 返回的是一个对象。
group分组
()括号表示分组并获取
JSON
反序列化
要先导入import json
json.loads可以解析json字符串
student打印出来是一个字典类型
序列化
Pthon的序列化用json.dumps函数,传入一个对象,就可以得到相对应的json字符串