怎么在python中用正则提取指定多个字符串?

类似以下含有2个字符串的列表

ls = ['小明:29;星期一:红色;黄小周:19;星期二:蓝色,绿色;秦小风:33;星期三:青色;周小七:26;星期四:紫色,紫红色;花样小小:18;小康:24;周一天气:晴天;周三天气:下雨', '星期一:红色;黄小周:广州;星期二:蓝色,绿色;星期三:蓝色,青紫色;周小七:26;星期四:紫色,紫红色;花样小小:上海;小康:24;周一天气:阴天;周三天气:下雨;小明:北京;秦小风:33']

从上面列表中的字符串中,提取字符串:(多个字符串,每个字符串中的字符串的顺序是无规律的)

黄小周:19
星期三:青色
周一天气:晴天

黄小周:广州
星期三:蓝色,青紫色
周一天气:阴天

题主朋友,我把两种方法都列举了,请参考

import re


# 不用re的方法
def func(goal_list, set_names):
    string = str(goal_list).strip('[\'').strip(']\'').replace('\', \'', ';').split(';')
    result = [each for name in set_names for each in string if name in each]
    return result


# 用re的方法
def re_try(goal_list, set_names):
    result = []
    for name in set_names:
        result += re.findall(name+r":\w*,*\w*", str(goal_list), re.DOTALL)
    return result


ls = ['小明:29;星期一:红色;黄小周:19;星期二:蓝色,绿色;秦小风:33;星期三:青色;周小七:26;星期四:紫色,紫红色;花样小小:18;小康:24;周一天气:晴天;周三天气:下雨',
      '星期一:红色;黄小周:广州;星期二:蓝色,绿色;星期三:蓝色,青紫色;周小七:26;星期四:紫色,紫红色;花样小小:上海;小康:24;周一天气:阴天;周三天气:下雨;小明:北京;秦小风:33']
names = ['黄小周', '星期三', '周一天气']
print(func(ls, names))
print(re_try(ls, names))
# ['黄小周:19', '黄小周:广州', '星期三:青色', '星期三:蓝色,青紫色', '周一天气:晴天', '周一天气:阴天']