import itertools, re
s_list = ['abc', 'def', '0123', '10-b', '0xFF']
text = 'abcd abc def 000xFF 0123 10-b 0xFF abc'
it1, it2 = itertools.tee(s_list, 2)
next(it2)
pattern = '|'.join('{0}\s{{1,4}}{1}(?=\s|$)'.format(word1, word2) for word1, word2 in zip(it1, it2))
#Непересекающиеся вхождения пар
print (re.findall(pattern, text))
#Если нужны пересекающиеся вхождения
pattern = r'(?=(' + pattern + '))'
print (re.findall(pattern, text))
aW1wb3J0IGl0ZXJ0b29scywgcmUKIApzX2xpc3QgPSBbJ2FiYycsICdkZWYnLCAnMDEyMycsICcxMC1iJywgJzB4RkYnXQp0ZXh0ID0gJ2FiY2QgYWJjICBkZWYgMDAweEZGIDAxMjMgIDEwLWIgMHhGRiAgICAgYWJjJwogCml0MSwgaXQyID0gaXRlcnRvb2xzLnRlZShzX2xpc3QsIDIpCm5leHQoaXQyKQoKcGF0dGVybiA9ICd8Jy5qb2luKCd7MH1cc3t7MSw0fX17MX0oPz1cc3wkKScuZm9ybWF0KHdvcmQxLCB3b3JkMikgZm9yIHdvcmQxLCB3b3JkMiBpbiB6aXAoaXQxLCBpdDIpKQoKI9Cd0LXQv9C10YDQtdGB0LXQutCw0Y7RidC40LXRgdGPINCy0YXQvtC20LTQtdC90LjRjyDQv9Cw0YAKcHJpbnQgKHJlLmZpbmRhbGwocGF0dGVybiwgdGV4dCkpCgoj0JXRgdC70Lgg0L3Rg9C20L3RiyDQv9C10YDQtdGB0LXQutCw0Y7RidC40LXRgdGPINCy0YXQvtC20LTQtdC90LjRjwpwYXR0ZXJuID0gcicoPz0oJyArIHBhdHRlcm4gKyAnKSknCnByaW50IChyZS5maW5kYWxsKHBhdHRlcm4sIHRleHQpKQ==