Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> python

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-

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

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

Comenzaremos el tutorial de expresiones con este sencillo ejercicio usando las expresiones (w+) y (^).

Ejemplo de expresión w+ y ^

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

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:

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)

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

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.


python

  1. Python String strip() Función con EJEMPLO
  2. Python String count () con EJEMPLOS
  3. Python String format() Explicar con EJEMPLOS
  4. Longitud de cadena de Python | método len() Ejemplo
  5. Método Python String find() con ejemplos
  6. Función Python round() con EJEMPLOS
  7. Función Python map() con EJEMPLOS
  8. Python Timeit() con ejemplos
  9. Contador de Python en colecciones con ejemplo
  10. Python List count () con EJEMPLOS
  11. Índice de lista de Python () con ejemplo