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))