Python RegEx:re.match(), re.search(), re.findall() con ejemplo
¿Qué es la expresión regular en Python?
Una expresión regular (RE) en un lenguaje de programación es una cadena de texto especial que se utiliza para describir un patrón de búsqueda. Es extremadamente útil para extraer información de texto como código, archivos, registro, hojas de cálculo o incluso documentos.
Al usar la expresión regular de Python, lo primero es reconocer que todo es esencialmente un carácter, y estamos escribiendo patrones para que coincidan con una secuencia específica de caracteres, también conocida como cadena. Ascii o letras latinas son las que están en sus teclados y Unicode se usa para hacer coincidir el texto extranjero. Incluye dígitos y puntuación y todos los caracteres especiales como $#@!%, etc.
En este tutorial de Python RegEx, aprenderemos-
- Sintaxis de expresiones regulares
- Ejemplo de expresión w+ y ^
- Ejemplo de la expresión \s en la función re.split
- Uso de métodos de expresiones regulares
- Usando re.match()
- Encontrar patrón en texto (re.search())
- Uso de re.findall para texto
- Banderas de Python
- Ejemplo de re.M o banderas multilínea
Por ejemplo, una expresión regular de Python podría decirle a un programa que busque un texto específico de la cadena y luego imprima el resultado correspondiente. La expresión puede incluir
- Coincidencia de texto
- Repetición
- Ramificación
- Composición de patrones, etc.
La expresión regular o RegEx en Python se denota como RE (RE, expresiones regulares o patrón de expresión regular) se importan a través del módulo re . Python admite expresiones regulares a través de bibliotecas. RegEx en Python admite varias cosas como Modificadores, identificadores y caracteres de espacio en blanco .
Identificadores | Modificadores | Caracteres de espacio en blanco | Se requiere escape |
---|---|---|---|
\d=cualquier número (un dígito) | \d representa un dígito. Ejemplo:\d{1,5} declarará un dígito entre 1,5 como 424,444,545, etc. | \n =nueva línea | . + * ? [] $ ^ () {} | \ |
\D=cualquier cosa menos un número (un no dígito) | + =coincide con 1 o más | \s=espacio | |
\s =espacio (tabulador, espacio, nueva línea, etc.) | ? =coincide con 0 o 1 | \t =tabulador | |
\S=cualquier cosa menos un espacio | * =0 o más | \e =escapar | |
\w =letras (Coincide con el carácter alfanumérico, incluido "_") | $ coincide con el final de una cadena | \r =retorno de carro | |
\W =cualquier cosa menos letras (Coincide con un carácter no alfanumérico excepto "_") | ^ coincide con el inicio de una cadena | \f=fuente de formulario | |
. =cualquier cosa menos letras (puntos) | | coincide con x/y | —————– | |
\b =cualquier carácter excepto la nueva línea | [] =rango o “varianza” | —————- | |
\. | {x} =esta cantidad de código anterior | —————– |
Sintaxis de expresiones regulares (RE)
import re
- Módulo "re" incluido con Python utilizado principalmente para la búsqueda y manipulación de cadenas
- También se usa con frecuencia para el "raspado" de páginas web (extraer una gran cantidad de datos de los sitios web)
Comenzaremos el tutorial de expresiones con este sencillo ejercicio usando las expresiones (w+) y (^).
Ejemplo de expresión w+ y ^
“^”: Esta expresión coincide con el comienzo de una cadena- “w+ “:Esta expresión coincide con el carácter alfanumérico en la cadena
Aquí veremos un ejemplo de Python RegEx de cómo podemos usar la expresión w+ y ^ en nuestro código. Cubrimos la función re.findall() en Python, más adelante en este tutorial, pero por un momento simplemente nos enfocamos en la expresión \w+ y \^.
Por ejemplo, para nuestra cadena "guru99, la educación es divertida" si ejecutamos el código con w+ y^, dará como resultado "guru99".
import re xx = "guru99,education is fun" r1 = re.findall(r"^\w+",xx) print(r1)
Recuerde, si elimina el signo + de w+, la salida cambiará y solo dará el primer carácter de la primera letra, es decir, [g]
Ejemplo de la expresión \s en la función re.split
- “s”:esta expresión se usa para crear un espacio en la cadena
Para comprender cómo funciona este RegEx en Python, comenzamos con un ejemplo simple de Python RegEx de una función dividida. En el ejemplo, hemos dividido cada palabra usando la función “re.split” y al mismo tiempo hemos usado la expresión \s que permite analizar cada palabra en la cadena por separado.
Cuando ejecute este código, obtendrá el resultado ['nosotros', 'somos', 'dividiendo', 'las', 'palabras'].
Ahora, veamos qué sucede si elimina "\" de s. No hay un alfabeto 's' en la salida, esto se debe a que hemos eliminado '\' de la cadena, y evalúa "s" como un carácter regular y, por lo tanto, divide las palabras donde encuentra "s" en la cadena.
Del mismo modo, hay una serie de otras expresiones regulares de Python que puede usar de varias maneras en Python como \d,\D,$,\.,\b, etc.
Aquí está el código completo
import re xx = "guru99,education is fun" r1 = re.findall(r"^\w+", xx) print((re.split(r'\s','we are splitting the words'))) print((re.split(r's','split the words')))
A continuación, veremos los tipos de métodos que se utilizan con expresiones regulares en Python.
Uso de métodos de expresiones regulares
El paquete "re" proporciona varios métodos para realizar consultas en una cadena de entrada. Veremos los métodos de re en Python:
- re.coincidir()
- re.buscar()
- re.findall()
Nota :Basado en las expresiones regulares, Python ofrece dos operaciones primitivas diferentes. El método de coincidencia busca una coincidencia solo al comienzo de la cadena, mientras que la búsqueda busca una coincidencia en cualquier parte de la cadena.
re.coincidencia()
re.coincidir() La función de re en Python buscará el patrón de expresión regular y devolverá la primera aparición. El método Python RegEx Match busca una coincidencia solo al principio de la cadena. Entonces, si se encuentra una coincidencia en la primera línea, devuelve el objeto de coincidencia. Pero si se encuentra una coincidencia en alguna otra línea, la función Python RegEx Match devuelve nulo.
Por ejemplo, considere el siguiente código de la función Python re.match(). La expresión "w+" y "\W" coincidirá con las palabras que comienzan con la letra "g" y, a partir de entonces, todo lo que no comience con "g" no se identifica. Para verificar la coincidencia de cada elemento en la lista o cadena, ejecutamos forloop en este ejemplo de Python re.match().
re.search():encontrar un patrón en el texto
re.buscar() La función buscará el patrón de expresión regular y devolverá la primera aparición. A diferencia de Python re.match(), verificará todas las líneas de la cadena de entrada. La función Python re.search() devuelve un objeto coincidente cuando se encuentra el patrón y "nulo" si no se encuentra el patrón
¿Cómo usar la búsqueda()?
Para usar la función de búsqueda (), primero debe importar el módulo Python re y luego ejecutar el código. La función Python re.search() toma el "patrón" y el "texto" para escanear desde nuestra cadena principal
Por ejemplo, aquí buscamos dos cadenas literales "Pruebas de software" "guru99", en una cadena de texto "Las pruebas de software son divertidas". Para "pruebas de software", encontramos la coincidencia, por lo tanto, devuelve el resultado de Python re.search () Ejemplo como "encontrado una coincidencia", mientras que para la palabra "guru99" no pudimos encontrarla en la cadena, por lo tanto, devuelve el resultado como "Sin coincidencia ”.
re.buscartodo()
buscartodo() El módulo se utiliza para buscar "todas" las ocurrencias que coinciden con un patrón dado. Por el contrario, el módulo search() solo devolverá la primera aparición que coincida con el patrón especificado. findall() iterará sobre todas las líneas del archivo y devolverá todas las coincidencias de patrón que no se superpongan en un solo paso.
¿Cómo utilizar re.findall() en Python?
Aquí tenemos una lista de direcciones de correo electrónico, y queremos que todas las direcciones de correo electrónico se obtengan de la lista, usamos el método re.findall() en Python. Encontrará todas las direcciones de correo electrónico de la lista.
Aquí está el código completo para Ejemplo de re.findall()
import re list = ["guru99 get", "guru99 give", "guru Selenium"] for element in list: z = re.match("(g\w+)\W(g\w+)", element) if z: print((z.groups())) patterns = ['software testing', 'guru99'] text = 'software testing is fun?' for pattern in patterns: print('Looking for "%s" in "%s" ->' % (pattern, text), end=' ') if re.search(pattern, text): print('found a match!') else: print('no match') abc = '[email protected], [email protected], [email protected]' emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc) for email in emails: print(email)
Banderas de Python
Muchos métodos Python Regex y funciones Regex toman un argumento opcional llamado Flags. Estas banderas pueden modificar el significado del patrón Python Regex dado. Para entender esto, veremos uno o dos ejemplos de estas banderas.
Varias banderas utilizadas en Python incluyen
Sintaxis para indicadores Regex | ¿Qué hace esta bandera? |
---|---|
[re.M] | Haga que el principio/final considere cada línea |
[re.I] | Ignora mayúsculas y minúsculas |
[re.S] | Hacer [ . ] |
[re.U] | Hacer que {\w,\W,\b,\B} siga las reglas de Unicode |
[re.L] | Hacer que {\w,\W,\b,\B} siga la configuración regional |
[re.X] | Permitir comentarios en Regex |
Ejemplo de re.M o Banderas multilínea
En multilínea, el carácter de patrón [^] coincide con el primer carácter de la cadena y el comienzo de cada línea (siguiendo inmediatamente después de cada salto de línea). Mientras que la expresión “w” minúscula se utiliza para marcar el espacio con caracteres. Cuando ejecuta el código, la primera variable "k1" solo imprime el carácter "g" para la palabra guru99, mientras que cuando agrega un indicador multilínea, obtiene los primeros caracteres de todos los elementos de la cadena.
Aquí está el código
import re xx = """guru99 careerguru99 selenium""" k1 = re.findall(r"^\w", xx) k2 = re.findall(r"^\w", xx, re.MULTILINE) print(k1) print(k2)
- Declaramos la variable xx para la cadena ” guru99…. gurú de la carrera99….selenio”
- Ejecute el código sin usar banderas multilínea, da como resultado solo 'g' de las líneas
- Ejecute el código con el indicador "multilínea", cuando imprima 'k2' da la salida como 'g', 'c' y 's'
- Entonces, la diferencia que podemos ver después y antes de agregar varias líneas en el ejemplo anterior.
Del mismo modo, también puede usar otras banderas de Python como re.U (Unicode), re.L (Seguir configuración regional), re.X (Permitir comentarios), etc.
Ejemplo de Python 2
Los códigos anteriores son ejemplos de Python 3. Si desea ejecutar Python 2, considere el siguiente código.
# Example of w+ and ^ Expression import re xx = "guru99,education is fun" r1 = re.findall(r"^\w+",xx) print r1 # Example of \s expression in re.split function import re xx = "guru99,education is fun" r1 = re.findall(r"^\w+", xx) print (re.split(r'\s','we are splitting the words')) print (re.split(r's','split the words')) # Using re.findall for text import re list = ["guru99 get", "guru99 give", "guru Selenium"] for element in list: z = re.match("(g\w+)\W(g\w+)", element) if z: print(z.groups()) patterns = ['software testing', 'guru99'] text = 'software testing is fun?' for pattern in patterns: print 'Looking for "%s" in "%s" ->' % (pattern, text), if re.search(pattern, text): print 'found a match!' else: print 'no match' abc = '[email protected], [email protected], [email protected]' emails = re.findall(r'[\w\.-]+@[\w\.-]+', abc) for email in emails: print email # Example of re.M or Multiline Flags import re xx = """guru99 careerguru99 selenium""" k1 = re.findall(r"^\w", xx) k2 = re.findall(r"^\w", xx, re.MULTILINE) print k1 print k2
Resumen
Una expresión regular en un lenguaje de programación es una cadena de texto especial que se utiliza para describir un patrón de búsqueda. Incluye dígitos y puntuación y todos los caracteres especiales como $#@!%, etc. La expresión puede incluir literal
- Coincidencia de texto
- Repetición
- Ramificación
- Composición de patrones, etc.
En Python, una expresión regular se denota como RE (RE, expresiones regulares o patrón de expresión regular) se incrustan a través del módulo Python re.
- Módulo "re" incluido con Python utilizado principalmente para la búsqueda y manipulación de cadenas
- También se usa con frecuencia para el "raspado" de páginas web (extraer una gran cantidad de datos de los sitios web)
- Los métodos de expresiones regulares incluyen re.match(),re.search()&re.findall()
- Otros métodos de reemplazo de Python RegEx son sub() y subn(), que se usan para reemplazar cadenas coincidentes en re
- Banderas de Python Muchos métodos Python Regex y funciones Regex toman un argumento opcional llamado Flags
- Estas banderas pueden modificar el significado del patrón Regex dado
- Varios indicadores de Python utilizados en los métodos Regex son re.M, re.I, re.S, etc.
python
- Python String strip() Función con EJEMPLO
- Python String count () con EJEMPLOS
- Python String format() Explicar con EJEMPLOS
- Longitud de cadena de Python | método len() Ejemplo
- Método Python String find() con ejemplos
- Función Python round() con EJEMPLOS
- Función Python map() con EJEMPLOS
- Python Timeit() con ejemplos
- Contador de Python en colecciones con ejemplo
- Python List count () con EJEMPLOS
- Índice de lista de Python () con ejemplo