2010-07-27 8 views
46

Duplicar posibles:
What is the difference between Python’s re.search and re.match?pitón - re.match vs re.search

Recientemente se han de saltar en la comprensión de expresiones regulares con el pitón.

He estado mirando la api; Me parece que no puede entender la diferencia entre:

re.match vs re.search

cuándo es mejor utilizar cada uno de estos? pros? ¿contras?

Por favor y gracias.

+2

Paso 1. Buscar. http://stackoverflow.com/questions/180986/what-is-the-difference-between-pythons-re-search-and-re-match. Una vez que haya buscado, haga una pregunta ** específica **. –

Respuesta

53

re.match() coincide solo desde el principio de la cadena. Un gotcha común. Vea el documentation.

+2

Exactamente. Implementación trivial (muy trivial, por ejemplo, no tiene en cuenta el modo MULTILINE): re.match = patrón lambda, cadena, flags = 0: re.search ('^' + patrón, cadena, indicadores) – delnan

+1

@delnan: Eso sería '\ A'. Pero en realidad 'match' es más primitivo que' search'. – kennytm

36

De search() vs. match():

re.match() comprueba si hay un partido sólo al principio de la cadena, mientras que re.search() comprueba si hay un partido en cualquier lugar de la cadena.

>>> re.match("c", "abcdef") # No match 
>>> re.search("c", "abcdef") # Match 
<_sre.SRE_Match object at ...> 
7

simplemente supe que también se puede buscar subcadenas como este:

if 'c' in 'abcdef' 
# True 
+2

Buena idea para evitar expresiones regulares si no las necesitas. "Algunas personas, cuando se enfrentan con un problema, piensan 'Lo sé, usaré expresiones regulares'. Ahora ellos tienen dos problemas." -Jamie Zawinski – neuronet