Si es programador, es probable que ya sepa qué son las expresiones regulares (regex). Los patrones de expresiones regulares se han implementado en casi todos los lenguajes de programación convencionales, pero aún así, la mayoría de los desarrolladores no reconocen el poder y la versatilidad de estos patrones.
Esta guía trata sobre expresiones regulares y cómo puede usarlas en el lenguaje de programación Python.
¿Qué son las expresiones regulares?
Las expresiones regulares son patrones que ayudan al usuario a hacer coincidir combinaciones de caracteres en archivos de texto y cadenas. Puede utilizar expresiones regulares para filtrar o encontrar un patrón específico en la salida de un comando o documento.
Hay varios casos de uso de expresiones regulares, siendo el más conocido el comando grep en Linux. Otras aplicaciones incluyen el filtrado de información, como la extracción de direcciones de correo electrónico y números de teléfono de un volcado de datos.
La razón principal por la que muchos desarrolladores se desvían de las expresiones regulares es la falta de conciencia sobre el poder de la coincidencia de patrones. Algunos incluso encuentran confusas las expresiones regulares debido a la gran cantidad de caracteres y secuencias que se utilizan en los patrones.
Cualquiera sea la razón, las expresiones regulares son y serán uno de los aspectos más importantes de la programación que todos deberían conocer.
Expresiones regulares: caracteres y secuencias coincidentes
Regex es un lenguaje completamente nuevo en sí mismo. Un motor de expresiones regulares interpreta patrones compuestos por varios caracteres equipados con significados específicos. Los literales básicos, como los caracteres alfanuméricos, coinciden. Pero los caracteres complejos como $, *, +, {, etc. ayuda en el emparejamiento de orden superior.
- Asterisco (*): Coincide con el carácter anterior cero o más veces. El significado literal del carácter sería "Elemento multiplicado n veces". Por ejemplo, si la expresión regular es a B C*, las cadenas coincidentes serán ab, abc, abcc, abccc, abcccc, etc. La expresion [antes de Cristo]* coincidirá con bc, bcbc, bcbc, etc.
- Más (+): Coincide con el carácter anterior una o más veces. El funcionamiento de la + el personaje es similar a *, pero el + el personaje omite el patrón si el personaje no aparece. Por ejemplo, abc + coincidirá con abc, abcc, abccc, etc. pero no ab.
- Signo de interrogación (?): Coincide con el carácter anterior cero o una vez (s). Por ejemplo, el patrón ¿a B C? coincidirá con ab y abc solamente.
- Tubería (|): Usado como binario O operador. Coincide con cualquiera de los caracteres que preceden y siguen a la tubería. Por ejemplo, a | b coincidirá con a o b.
- Punto (.): Coincide con un personaje cuya identidad se desconoce. Por ejemplo, C.A coincidirá con aac, abc, acc, a2c, etc.
- Zanahoria (^): Coincide con el primer carácter del patrón. Por ejemplo, ^ Ra coincidirá con las palabras que comienzan con Real academia de bellas artes como Rabbit, Raccoon y Random.
- Dólar ($): Coincide con el último carácter del patrón. Por ejemplo, un $ coincidirá con las palabras que terminan con un como Van, Dan y Plan.
- Guión (-): Se usa para definir un rango de caracteres. Por ejemplo, [0-9] coincidirá con todos los caracteres numéricos de un solo dígito.
Las secuencias especiales utilizadas en patrones de expresión regular son:
- \A: Devuelve una coincidencia si los caracteres siguientes están presentes al principio de la cadena. Por ejemplo, \ Ael coincidirá con las palabras que comienzan con el La como The, Them, They, etc.
- \B: Devuelve una coincidencia si el carácter se encuentra al principio o al final de una palabra. Por ejemplo, \ bmad y loco \ b coincidirá con palabras como hecho y nómada respectivamente.
- \B: Devuelve una coincidencia si el carácter no se encuentra al principio o al final de una palabra.
- \D: Coincide con los caracteres numéricos presentes en la cadena. Por ejemplo, /d* coincidirá con números como 1, 12, 1232, etc.
- \D: Coincide con caracteres no numéricos en la cadena. /D coincidirá con a, b, c, f, etc.
- \s: Coincide con un carácter de espacio en blanco en el texto.
- \S: Coincide con un carácter que no es un espacio en blanco en el texto.
- \ w: Devuelve una coincidencia si la cadena contiene caracteres alfanuméricos, incluidos guiones bajos. Por ejemplo, \ w coincidirá con a, b, c, d, 1, 2, 3, etc.
- \ W: Devuelve una coincidencia si la cadena no contiene caracteres alfanuméricos o guiones bajos.
- \ Z: Coincide con los caracteres al final de una cadena. Por ejemplo, end \ Z coincidirá con las palabras que terminan con final como doblar, reparar, tender, etc.
Métodos de Python para expresiones regulares
En Python, el re Library proporciona todas las funciones y utilidades necesarias para implementar expresiones regulares en sus programas. No tiene que descargar la biblioteca usando pip, ya que viene preinstalada con el intérprete de Python.
Para importar el re biblioteca en Python, agregue el siguiente código a su secuencia de comandos:
importar re
Tenga en cuenta que al pasar expresiones regulares en Python, utilizamos cadenas sin procesar, ya que no interpretan caracteres especiales como \norte y \ t diferentemente.
Partido()
La revancha() El método en Python devuelve un objeto regex si el programa encuentra una coincidencia al principio de la cadena especificada. Esta función toma dos argumentos básicos:
re.match (patrón, cadena)
...dónde patrón es la expresión regular y cuerda es el texto que debe buscarse.
Eche un vistazo al fragmento de código a continuación.
importar re
match = re.match (r'Word ', "Esta oración contiene una palabra")
imprimir (emparejar)
La r carácter antes de la cadena significa cadena sin formato.
Producción:
Ninguno
El código antes mencionado regresa Ninguno porque Palabra no estaba presente al principio de la cadena.
Si se encuentra una coincidencia, puede imprimirla utilizando el grupo() método que pertenece al objeto regex.
importar re
match = re.match (r'Word ', "Word es difícil de leer")
imprimir (match.group (0))
Producción:
Palabra
Buscar()
La investigar() El método toma argumentos similares a re.match (). Si bien match () solo devuelve coincidencias presentes al principio de la cadena, buscar() devolverá coincidencias encontradas en cualquier índice de la cadena.
importar re
match = re.search (r'Word ', "Esta oración contiene una palabra. La palabra es difícil de leer ").
imprimir (match.group (0))
Tenga en cuenta que el partido() y buscar() Los métodos solo devolverán una coincidencia de patrón. En el código mencionado anteriormente, Palabra aparece dos veces. Pero el buscar() La función solo coincidirá con la primera aparición de la palabra.
Palabra
Encuentra todos()
Como ya puede adivinar, el encuentra todos() El método devuelve todas las coincidencias posibles en la cadena.
importar re
match = re.search (r'Word ', "Esta oración contiene una palabra. La palabra es difícil de leer ").
para elem en partido:
imprimir (elem)
En lugar de devolver un objeto regex, la función findall () devuelve una lista de todas las coincidencias. Puede iterar a través de la lista usando un para bucle en python.
Separar()
Si desea dividir una cadena en subcadenas usando un patrón como delimitador, entonces el separar() La función es la que necesita.
importar re
split = re.split (r'and ', "Esta palabra y esa y esta son diferentes").
imprimir (dividir)
Producción:
['Esta palabra "," eso "," esto es diferente "].
Sub()
La sub() El método permite al usuario sustituir una palabra específica en lugar de un patrón. Toma los siguientes argumentos.
re.sub (patrón, reemplazo, cadena)
Considere este fragmento de código:
importar re
result = re.sub (r'and ',' or ', "Dave y Harry deben ser castigados.")
imprimir (resultado)
Producción:
Dave o Harry deben ser castigados.
Compilar()
La re.compile () método en el re La biblioteca permite al usuario almacenar una versión compilada del patrón de expresión regular en la memoria. Luego, utilizando el objeto compilado, el usuario puede filtrar rápidamente el volcado de texto especificado para patrones coincidentes.
importar re
patrón = re.compile ('Python')
match = pattern.findall ("Python es un gran lenguaje para escribir scripts. Python es fácil de aprender ").
imprimir (emparejar)
Esta función se utiliza principalmente para guardar patrones que consumen muchos recursos y necesitan mucho tiempo para ejecutarse. Compilar y guardar el patrón como un objeto de antemano resuelve este problema.
Aproveche el poder de Regex con Python
Cuando trabaja con archivos de texto y salida, regex es una gran herramienta para tener a su disposición. Puede escribir rápidamente algún código para filtrar o sustituir patrones específicos en el documento.
Memorizar todos los caracteres y las secuencias coincidentes puede ser difícil si recién está comenzando con expresiones regulares. Para mejorar en las expresiones regulares, consultar una lista de caracteres, métodos y secuencias de vez en cuando definitivamente lo ayudará a largo plazo.
Utilice esta lista de expresiones regulares de Python para que pueda mejorar en el uso de este versátil lenguaje de programación.
Leer siguiente
- Programación
- Programación
- Pitón
Deepesh es el editor junior para Linux en MUO. Ha estado escribiendo contenido informativo en Internet durante más de 3 años. En su tiempo libre le gusta escribir, escuchar música y tocar la guitarra.
Suscríbete a nuestro boletín
¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!
Un paso más…!
Confirme su dirección de correo electrónico en el correo electrónico que le acabamos de enviar.