多重继承和正则表达式

时间:2022-01-30 18:45:14

正则表达式

符号 解释 示例 说明
. 可以匹配任意字符 a. adj , afhjs&45
\w 匹配字母数字下划线 a\w af,a7,a_
\d 匹配数字 a\d a1,a8
\s 匹配空格 hello\sword hello word
\D 非数字 a\D ai,a*
\W 非字母数字下划线 a\W a!,a#
^ 表示以什么开头 ^a 匹配a开头的字符串
$ 表示以什么结尾
[] 匹配列表里任意一个数 [123456] 123456中任意一个
| 表示或者 [1 2
[^] 表示里面没有 [^a12] 没有a12的任意一个字符
{n} 匹配n次

在函数re.中后面跟的一些函数意义

compile 表示返回的正则表达式 在重复的时候可以用该函数避免重复出现
match 从第一个开始匹配
search 任意位置匹配
sub替换
findall匹配的数字组成列表

一般用法

def mu():
    """验证是否包含字母数字下划线长度6~20"""
    num = 'fhj1dhfjs'
    m = re.match(r'\w{6,20}',num)
    if m:
        print('True')
    else:
        print('A')
    # 表示拿出取出的数
    print(m.group())

列表和迭代器用法

import re


def main():
    pa = re.compile(r'(?<=\D)1[345]\d{9}(?=\D)')
    # 表示前面不能为数字后面也是 前瞻后看 D表示不为数字
    s = '我手机号是13532458748不是13680808080'
    m = pa.search(s) # 从任意位置开始能匹配 如果后面加参数表示指定从哪开始匹配
    mylist = pa.findall(s) # 所有的保存为列表
    print(mylist)
    # iter - iterator - 迭代器
    for dem in pa.finditer(s):
        print(dem)
        print(dem.group())
        print(dem.span())

sub用法

def ma():
    sentence = '马化腾我操你妈FUCK'
    pure = re.sub('[操fuck]|马化腾','*'
           ,sentence, flags=re.IGNORECASE)
    # IGNORE表示忽略大小写
    #任意的列表值替换成*
    print(pure)

    # split 表示拆分
    sentence = 'hello you go to where'
    list_my = re.split(r'[ ,]',sentence)
    print(list_my)

    # 贪婪 ?表示最小的一种可能 如果不加就贪婪模式取最大的长度
    a = 'aabababdb'
    m = re.match(r'a.*?b',a)
    print(m)

在sub中可以替换成函数

import re
#将字符串中数字进行平方然后返回回去
def foo(mo):
    val = int(mo.group())
    return str(val ** 2)

def main():
    counter = "fds516asf167a61fe"
    c = re.compile(r'\d+')
    print(re.sub(c,foo,counter))

多重继承

在类中除了继承父类的函数和特征 如果父类也有父类那么就形成了多重继承

class Fa(object):
    def __init__(self, name):
        self.name = name

    def eat(self):
        print('%s在吃烟' % self.name)

class Music(object):
    def __init__(self, art_name):
        self.art_name = art_name

    def eat(self):
        print('%s在吃糖' % self.art_name)

    def drink(self):
        print('%s在喝红茶' % self.art_name)

# 如果有相同的对象 按顺序继承 谁在前面继承谁的对象
# 如果多个父类又有公共的父类 那么就采用C3算法(好比先从父辈顺序找,如果父辈没有就找爷爷辈)
# 在python3之前是采用深度优先搜索(DFS)
class Sun(Fa, Music):
    def __init__(self, name, art_name):
        Fa.__init__(self, name)
        Music.__init__(self, art_name)

def main():
    sun = Sun('wo', 'archer')
    sun.eat()
    # 如果想调用第二父类方法可以选择顺序点到或者类里面命名
    Music.eat(sun)
    sun.drink()