Python re: return True si regex contiene en la cadena

Tengo una expresión regular como esta:

regexp = u'ba[r|z|d]' 

La función debe devolver True si la palabra contiene bar , baz o bad . En resumen, necesito regexp analógico para Python‘s

 'any-string' in 'text' 

¿Cómo puedo darme cuenta? ¡Gracias!

 import re word = 'fubar' regexp = re.compile(r'ba[rzd]') if regexp.search(word): print 'matched' 

El mejor por mucho es

 bool(re.search('ba[rzd]', 'foobarrrr')) 

Devuelve verdadero

Match objetos Match siempre son verdaderos, y None se devuelve si no hay coincidencia. Sólo prueba de veracidad.

Código:

 >>> st = 'bar' >>> m = re.match(r"ba[r|z|d]",st) >>> if m: ... m.group(0) ... 'bar' 

Salida = bar

Si quieres funcionalidad de search .

 >>> st = "bar" >>> m = re.search(r"ba[r|z|d]",st) >>> if m is not None: ... m.group(0) ... 'bar' 

y si no se encuentran regexp de

 >>> st = "hello" >>> m = re.search(r"ba[r|z|d]",st) >>> if m: ... m.group(0) ... else: ... print "no match" ... no match 

Como @bukzor mencionó si st = foo bar than match no funcionará. Por lo tanto, es más apropiado utilizar re.search .

Aquí hay una función que hace lo que quieres:

 import re def is_match(regex, text): pattern = re.compile(regex, text) return pattern.search(text) is not None 

El método de búsqueda de expresiones regulares devuelve un objeto en caso de éxito y Ninguno si el patrón no se encuentra en la cadena. Con eso en mente, devolvemos True siempre y cuando la búsqueda nos devuelva algo.

Ejemplos:

 >>> is_match('ba[rzd]', 'foobar') True >>> is_match('ba[zrd]', 'foobaz') True >>> is_match('ba[zrd]', 'foobad') True >>> is_match('ba[zrd]', 'foobam') False 

Puedes hacer algo como esto:

El uso de la búsqueda devolverá un objeto SRE_match, si coincide con su cadena de búsqueda.

 >>> import re >>> m = re.search(u'ba[r|z|d]', 'bar') >>> m <_sre.SRE_Match object at 0x02027288> >>> m.group() 'bar' >>> n = re.search(u'ba[r|z|d]', 'bas') >>> n.group() 

Si no, se devolverá Ninguno.

 Traceback (most recent call last): File "", line 1, in  n.group() AttributeError: 'NoneType' object has no attribute 'group' 

Y solo para imprimirlo para demostrar de nuevo:

 >>> print n None