Mientras intentaba aprender un poco más sobre las expresiones regulares, un tutorial sugirió que puede usar el \bpara hacer coincidir el límite de una palabra. Sin embargo, el siguiente fragmento del intérprete de Python no funciona como se esperaba:
>>> x = 'one two three'
>>> y = re.search("\btwo\b", x)
Debería haber sido un objeto de coincidencia si algo coincidía, pero lo es None.
¿La \bexpresión no es compatible con Python o la estoy usando mal?

re.search(r"\btwo\b", x)r"\btwo\b"?\b.r'\b'para que el personaje se escape. (o de lo contrario, doble escape\\b, que es asqueroso)Respuestas:
¿Por qué no lo intentas?
Salida:
También se olvidó de mencionar que debería usar cadenas sin procesar en su código
fuente
%sustitución de cuerdas es una mala tangente, irrelevante para esta pregunta en particular.Esto funcionará:
re.search(r"\btwo\b", x)Cuando se escribe
"\b"en Python, es un solo carácter:"\x08". O escapar de la barra invertida de esta manera:o escribe una cadena sin formato como esta:
fuente
Solo para explicar explícitamente por qué
re.search("\btwo\b", x)no funciona, es porque\ben una cadena de Python es una abreviatura de un carácter de retroceso.Entonces, el patrón
"\btwo\b"busca un retroceso, seguido detwootro retroceso, que la cadena que está buscando en (x = 'one two three') no tiene.Para permitir
re.search(ocompile) interpretar la secuencia\bcomo un límite de palabra, escape las barras diagonales inversas ("\\btwo\\b") o use una cadena sin formato para crear su patrón (r"\btwo\b").fuente
Documentación de Python
https://docs.python.org/2/library/re.html#regular-expression-syntax
fuente