正则表达式呀 我不会啊

字符串处理过程:
(设计正则表达式,生成长度为500的字符串,其中包括AB组合、大写
字母、小写字母、数字及标点符号;
(2)将其按照标点符号进行分隔,并以空格进行连接;
(3)将字符串中的AB替换为“**”,返回替换后的结果,和替换的次数


import re
import random

a = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,.!?'
# 生成字符串
while True:
    b = ''.join([random.choice(a) for n in range(500)])
    # 如果字符串符合条件则跳出循环,否则重新生成
    # 如果对AB数量有要求,正则可做变形,例如AB出现三次以上  (?=(.*?AB){3,})
    # 建议通过随机替换的方式替换出 AB 内容来
    if re.match('^(?=.{500}$)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])(?=.*?AB)(?=.*?[,!?\.])',b)!=None:
        break
# 生成的字符串
print(b)
# 按标点符号进行分隔
c = re.split('[],!?\.]', b)
# 并以空格进行连接
d = ' '.join(c)
print(d)
# 将 AB 替换为 **
e = re.sub('AB', '**', b)
f = re.findall('AB',b)
print(e)
print('AB出现了{}次,所以替换了{}次'.format(len(f),len(f)))