Сначала скомпилируйте ваши шаблоны:
import re
ps = [re.compile(p) for p in re_list]
Теперь вы можете перебирать их:
d = {}
for p in ps:
# `string` is your string. Please don't use `str` to name variables.
m = p.search(string)
if m:
d[p.pattern] = m.group()
print(d)
{'a': 'a', '\\s+d': ' d'}
Вы могли бы сделать это с пониманием списка
dict((p.pattern, p.search(s).group()) for p in ps if p.search(s))
Но вам придется искать дважды, что расточительно.Вы можете избежать этого, вместо этого запустив цикл над шаблонами, как я показал выше.