Por que meu regex com r'string 'corresponde, mas não' string 'usando Python?

A maneira como o regex funciona em Python é tão intensamente intrigante que me deixa mais furiosa a cada segundo que passa. Aqui está o meu problema:

Eu entendo que isso dá um resultado:

re.search(r'\bmi\b', 'grand rapids, mi 49505)

enquanto isso não:

re.search('\bmi\b', 'grand rapids, mi 49505)

E tudo bem. Eu entendo muito disso. Agora, eu tenho uma expressão regular que está sendo gerada assim:

regex = '|'.join(['\b' + str(state) + '\b' for state in states])

Se eu fizer agorare.search(regex, 'grand rapids, mi 49505'), falha pela mesma razão que meu segundosearch() exemplo falha.

Minha pergunta: Existe alguma maneira de fazer o que estou tentando fazer?

questionAnswers(4)

yourAnswerToTheQuestion