import re
s = 'word1 word2 My_WORD_HERE word1'
word = 'My_WORD_HERE'
wnb = 3
pat = '((?:\\w+\\s+){{0,{0}}}){1}((?:\\s+\\w+){{0,{0}}})'.format(wnb, word)
res = re.sub(pat, lambda m: m.group(1) + '? ' * (wnb - len(m.group(1).split
    ())) + word + m.group(2) + ' ?' * (wnb - len(m.group(2).split())), s)
как сохранить стабильную длину вывода RegEX в случае отсутствия данных, python2.7