- 字符集:[cf]:匹配c或者f a[cf]c:使用a和c的界定,匹配c或者f, [c-f]:匹配c到f中的字母,[^cf]:匹配不含c或者f字母-----衍生[a-z]:可匹配所有字母, [^a-z]:匹配所有非字母,\d:匹配所有的数字
import re
s = "abc,abc,adc,afc,ahc,aec,avc"
r = re.findall("a[fc]c",s)
- 概括字符集:\d:0-9的数字 等价于[0-9],\D:非数字,等价于[^0-9],\w:匹配包括下划线的任何单词字符,类似但不等价于[A-Za-z0-9],这里的单词字符使用的是Unicode字符集。\W:匹配任何非单词字符,等价于[^A-Za-z0-9],\s:匹配任何不常见的字符,包括空格,制表符,换页符等价于[\f\n\r\t\v],\S:匹配任何不常见字符,等价于[^\f\n\r\t\v]
- 数量词:[a-z]{3,6}
import re
a = "python 1111java678&php"
r = re.findall("[a-z]{3,6}",a)
print(r)
输出结果: ['python', 'java', 'php']
- 贪婪与非贪婪:python是贪婪算法,在数量词后面加?是非贪婪匹配
import re
a = "python 1111java678&php"
r = re.findall("[a-z]{3,6}?",a)====r = re.findall("[a-z]{3}",a)
print(r)
输出结果: ['pyt', 'hon', 'jav', 'php']
- 匹配0次1次或者无限次:*表示它前面的字符0次或无限次 + 匹配它前面的字符1次或者无限次 ?匹配前面的字符0次或1次
- 边界匹配:^开始边界,$结束边界, {}区间 ,[0-9] [-]表示范围:从开始字符串的开头到结束来匹配
import re
a = "100000000"
r = re.findall("\d{4,8}",a)
print(r) ---[1000000000]
import re
a = "100000000"
r = re.findall("^\d{4,8}$",a)
print(r) ---[]
- 组:()括号里面的字符必须是且关系 [] 里面的字符是或关系
imprt re
a = "pythonpythonpythonpython"
r = re.findall("(python){3}",a)
print(r) ----组的概念
- 匹配模式参数:ree.I:是忽略大小写 .:除换行符之外可以匹配所有的字符 re.S:匹配所有的字符包括换行符
import re
a = "python123Java php"
r = re.findall("java",a,re.I)
print(r)
- res.sub正则替换:这个内置函数的第二个参数可以是一个函数
import re
a = "pythonc#javac#phpc#"
def convert(value):----value 是获取的对象
mathod = value.group
return "!!!"+mathod+"!!!"
r = re.sub("c#",convert,a,1,res.I)
print(r)
- 函数作为参数传递:
import re
s = "A8C3721D86"
def convert(value):
mathod = value.group
if int(mathod)>=6:
return "9"
else:
return "0"
r = re.sub("\d",convert,s)
print(r)
- search与match函数:match:从开始处就开始匹配,如果第一位就不匹配就返回None,search:从开始处开始搜索,搜索整个字符串,如果匹配就立即返回第一个对象,否则返回None :区别findall: findall返回结果是list,match与search返回对象,并且只匹配一次,无论成功与否,并且要获取对象的内容必须要用到group方法,如果哟返回位置则要使用span()方法。
- 分组:group()分组的概念,group(0)是返回完整的字符串,1表示第一个分组信息,2表示第二个分组的信息
import re
s = "life is short,i use python,i love python"
r = re.search("life(.*)python(.*)python",s)
print(r.group(0)) ---life is short,i use python,i love python
print(r.group(1)) ---is short,i use
print(r.group(2)) ---,i love
- 正则的建议:www.cnblogs.com/zxin/archiv…

- 理解JSON:

- JSON反序列化:json.loads进行反序列化转化,json字符串loads,转化成dict字典,jsonarray数组loads,转化成list列表,json里层里面是双引号,外面是单引号!!!
import json
json_str = '{"name":"lucas_li","age":23}'
student = json.loads(json_str)
print(student)
- 序列化:就是json向json字符串的方向转化,方法就是json.dumps
import json
student = [{"name":"lucas_li","age":23},{"name":"lucas_li","age":23,"flag":false}]
json_str = json.dumps(student)
print(type(json_str))
print(json_str)
- json对象就是存在到javascript当中,json就是传输数据的一种格式,中间数据类型,json字符串就是json格式的字符串。