封装私有变量
__代表私有变量和方法,外界不支持使用,只有内部可以使用
继承
单继承
多继承,有共同的属性或方法,写在最前面的优先级高。
复写
父类名.属性或方法,方法里面记得写self,super().属性或方法,
多态
父类的抽象类(定义方法,但是不写具体的实现,直接写pass)
re.match函数
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
函数语法:
re.match(pattern, string, flags=0)
import re
print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配 span()返回(0,3)开始跟结束的坐标
print(re.match('com', 'www.runoob.com')) # 不在起始位置匹配,返回none
re.search方法
re.search 扫描整个字符串并返回第一个成功的匹配。
函数语法:
re.search(pattern, string, flags=0)
import re
print(re.search('www', 'www.runoob.com').span()) # 在起始位置匹配
print(re.search('com', 'www.runoob.com').span()) # 不在起始位置匹配
区别:
re.match 只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回 None,而 re.search 匹配整个字符串,直到找到一个匹配。
替换
参数:
- pattern : 正则中的模式字符串。
- repl : 替换的字符串,也可为一个函数。
- string : 要被查找替换的原始字符串。
- count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
- flags : 编译时用的匹配模式,数字形式。
import re
phone = "2004-959-559 # 这是一个电话号码"
# 删除注释
num = re.sub(r'#.*$', "", phone)
print ("电话号码 : ", num) # 电话号码 : 2004-959-559
# 移除非数字的内容
num = re.sub(r'\D', "", phone)
print ("电话号码 : ", num) # 电话号码 : 2004959559