Python Regex: re.search() VS re.findall()

Requisito previo: expresión regular con ejemplos | Python

Una expresión regular (a veces denominada expresión racional) es una secuencia de caracteres que define un patrón de búsqueda, principalmente para su uso en la coincidencia de patrones con strings, o coincidencia de strings, es decir, operaciones similares a «buscar y reemplazar». Las expresiones regulares son una forma generalizada de hacer coincidir patrones con secuencias de caracteres.

El módulo Expresiones regulares (RE) especifica un conjunto de strings (patrón) que coincide con él. Para entender la analogía RE, MetaCharacters son útiles, importantes y se utilizarán en funciones de módulo re.

Hay un total de 14 metacaracteres y se discutirán a medida que siguen en funciones:

\   Used to drop the special meaning of character
    following it (discussed below)
[]  Represent a character class
^   Matches the beginning
$   Matches the end
.   Matches any character except newline
?   Matches zero or one occurrence.
|   Means OR (Matches with any of the characters
    separated by it.
*   Any number of occurrences (including 0 occurrences)
+   One or more occurrences
{}  Indicate number of occurrences of a preceding RE 
    to match.
()  Enclose a group of REs

investigar()

re.search()El método devuelve Ninguno (si el patrón no coincide) o re.MatchObjectcontiene información sobre la parte coincidente de la string. Este método se detiene después de la primera coincidencia, por lo que es más adecuado para probar una expresión regular que para extraer datos.

Ejemplo:

Python3

# A Python program to demonstrate working of re.match(). 
import re 
    
# Lets use a regular expression to match a date string 
# in the form of Month name followed by day number 
regex = r"([a-zA-Z]+) (\d+)"
    
match = re.search(regex, "I was born on June 24") 
    
if match != None: 
    
    # We reach here when the expression "([a-zA-Z]+) (\d+)" 
    # matches the date string. 
    
    # This will print [14, 21), since it matches at index 14 
    # and ends at 21.  
    print("Match at index % s, % s" % (match.start(), match.end()))
    
    # We us group() method to get all the matches and 
    # captured groups. The groups contain the matched values. 
    # In particular: 
    # match.group(0) always returns the fully matched string 
    # match.group(1) match.group(2), ... return the capture 
    # groups in order from left to right in the input string 
    # match.group() is equivalent to match.group(0) 
    
    # So this will print "June 24" 
    print("Full match: % s" % (match.group(0)))
    
    # So this will print "June" 
    print("Month: % s" % (match.group(1)))
    
    # So this will print "24" 
    print("Day: % s" % (match.group(2)))
    
else: 
    print("The regex pattern does not match.")

Producción:

Match at index 14, 21
Full match: June 24
Month: June
Day: 24

re.findall()

Devuelve todas las coincidencias no superpuestas del patrón en la string, como una lista de strings. La string se escanea de izquierda a derecha y las coincidencias se devuelven en el orden encontrado.

Ejemplo:

Python3

# A Python program to demonstrate working of 
# findall() 
import re 
    
# A sample text string where regular expression  
# is searched. 
string = """Hello my Number is 123456789 and 
             my friend's number is 987654321"""
    
# A sample regular expression to find digits. 
regex = '\d+'             
    
match = re.findall(regex, string) 
print(match) 

Producción:

['123456789', '987654321']

Publicación traducida automáticamente

Artículo escrito por nikhilaggarwal3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *