Вам не нужно использовать регулярное выражение:
def foo(s, pos, chars='?|!'):
for i in range(pos - 1, -1, -1):
if s[i] == ' ':
continue
return s[i] in chars
return False
print(foo('blah? test', pos=6))
Если вы должны были использовать регулярное выражение:
def foo(s, pos, chars='?|!'):
l = re.findall(r'[^ ]', s[:pos]) # find all non-blank characters in first pos - 1 characters
if not l:
return False
return l[-1] in chars