正则表达式
符号 | 解释 | 示例 | 说明 |
---|---|---|---|
. | 可以匹配任意字符 | 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()