Regex Syntax and Basic Patterns
Desliza para mostrar el menú
Sintaxis de Regex: Elementos Fundamentales
Las expresiones regulares, o regex, se construyen utilizando una combinación de literales, metacaracteres, clases de caracteres y cuantificadores. Comprender estos componentes es esencial para escribir patrones efectivos.
- Literales son caracteres ordinarios que coinciden consigo mismos. Por ejemplo, el patrón
"cat"coincide exactamente con la cadena"cat"; - Metacaracteres son símbolos especiales que tienen significados únicos en regex. Los metacaracteres más comunes incluyen:
.(punto): coincide con cualquier carácter individual excepto un salto de línea;^: coincide con el inicio de una cadena;$: coincide con el final de una cadena;*: coincide con cero o más ocurrencias del elemento anterior;+: coincide con una o más ocurrencias del elemento anterior;?: coincide con cero o una ocurrencia del elemento anterior.
- Clases de caracteres permiten hacer coincidir cualquier carácter de un conjunto de caracteres. Por ejemplo,
[abc]coincide con"a","b"o"c", y[0-9]coincide con cualquier dígito del 0 al 9.
Metacaracteres y Cuantificadores Útiles Basados en Letras
\w: coincide con cualquier carácter de palabra (equivalente a[a-zA-Z0-9_]). Se utiliza para hacer coincidir letras, dígitos o guiones bajos individuales;\W: coincide con cualquier carácter que no sea de palabra (cualquier cosa que no coincida con\w);\d: coincide con cualquier dígito (equivalente a[0-9]);\D: coincide con cualquier carácter que no sea dígito;\b: coincide con un límite de palabra (la posición entre un carácter de palabra y uno que no lo es). Se utiliza para hacer coincidir palabras completas;\B: coincide con una posición que no es un límite de palabra.
Cuantificadores
Los cuantificadores especifican cuántas veces debe ocurrir el elemento anterior:
*: coincide cero o más veces; por ejemplo,\w*coincide con cualquier secuencia de caracteres de palabra, incluida la cadena vacía;+: coincide una o más veces; por ejemplo,\w+coincide con una o más caracteres de palabra consecutivos (como una palabra);?: coincide cero o una vez; por ejemplo,\w?coincide con cero o un carácter de palabra;{n}: coincide exactamente n veces; por ejemplo,\w{3}coincide exactamente con tres caracteres de palabra seguidos;{n,}: coincide n o más veces; por ejemplo,\w{2,}coincide con dos o más caracteres de palabra;{n,m}: coincide entre n y m veces; por ejemplo,\w{2,5}coincide con entre dos y cinco caracteres de palabra seguidos.
Ejemplos en Python
re.findall(r"\w+", "Regex123 is fun!")devuelve todas las palabras:["Regex123", "is", "fun"];re.findall(r"\bcat\b", "The cat scattered the catalog.")coincide solo con la palabra aislada"cat";re.findall(r"\w{5}", "apple banana kiwi")encuentra todas las secuencias de exactamente cinco caracteres de palabra:["apple", "banan"].
Estos metacaracteres y cuantificadores son esenciales para hacer coincidir letras, palabras y patrones similares a palabras en texto utilizando la biblioteca re de Python.
123456789101112131415import re text = "User123, admin42, guestX" # Find all digits digits = re.findall(r"[0-9]", text) print("Digits found:", digits) # Find all lowercase letters lowercase_letters = re.findall(r"[a-z]", text) print("Lowercase letters found:", lowercase_letters) # Find all uppercase letters uppercase_letters = re.findall(r"[A-Z]", text) print("Uppercase letters found:", uppercase_letters)
En este ejemplo, se utiliza la función re.findall() para buscar coincidencias en la cadena "User123, admin42, guestX". El patrón [0-9] coincide con cualquier dígito entre 0 y 9, por lo que encuentra todos los dígitos individuales en el texto. El patrón [a-z] coincide con cualquier letra minúscula de "a" a "z", y [A-Z] coincide con cualquier letra mayúscula de "A" a "Z". Cada clase de caracteres está encerrada entre corchetes, especificando el rango o conjunto de caracteres a coincidir. Estos patrones son fundamentales para extraer tipos específicos de caracteres de un texto.
123456789101112131415161718192021222324252627import re text = "Hello_123 world! Regex is fun." # \w matches any word character (alphanumeric or underscore) word_chars = re.findall(r"\w", text) print("Word characters (\\w):", word_chars) # \W matches any non-word character non_word_chars = re.findall(r"\W", text) print("Non-word characters (\\W):", non_word_chars) # \b matches word boundaries words = re.findall(r"\b\w+\b", text) print("Words using word boundaries (\\b):", words) # * quantifier: zero or more word characters after 'o' pattern_star = re.findall(r"o\w*", text) print("'o' followed by zero or more word characters (o\\w*):", pattern_star) # + quantifier: one or more word characters after 'R' pattern_plus = re.findall(r"R\w+", text) print("'R' followed by one or more word characters (R\\w+):", pattern_plus) # ? quantifier: 'l' optionally followed by 'e' pattern_question = re.findall(r"le?", text) print("'l' optionally followed by 'e' (le?):", pattern_question)
Aquí puedes ver cómo usar la función re.findall() de Python con varios patrones regex para extraer información de la cadena "Hello_123 world! Regex is fun.". Esto es lo que hace cada patrón:
-
\w: El patrónr"\w"coincide con cualquier carácter de palabra, que incluye letras (mayúsculas y minúsculas), dígitos y el guion bajo (_). En la cadena dada, encuentra cada carácter de palabra individual, como'H','e','l','o','1','2','3', etc. -
\W: El patrónr"\W"coincide con cualquier carácter que no sea de palabra. Esto incluye espacios, signos de puntuación y símbolos que no son letras, dígitos ni guiones bajos. En la cadena, encuentra caracteres como espacios, el signo de exclamación (!) y el punto (.). -
\b: El patrónr"\b\w+\b"utiliza límites de palabra (\b) para coincidir con palabras completas. Aquí,\w+coincide con uno o más caracteres de palabra, por lo que extrae palabras completas como'Hello_123','world','Regex','is'y'fun'como elementos separados. -
Cuantificador
*: El patrónr"o\w*"coincide con el carácter'o'seguido de cero o más caracteres de palabra. Esto significa que coincidirá con'o'aunque no esté seguido de ningún carácter de palabra, o capturará una secuencia que comience con'o'y continúe con cualquier carácter de palabra siguiente. En la cadena, encuentra'o_123'(de'Hello_123') y'orld'(de'world'). -
Cuantificador
+: El patrónr"R\w+"coincide con el carácter'R'seguido de uno o más caracteres de palabra. Esto es útil para encontrar palabras que comienzan con'R'y continúan con caracteres de palabra adicionales. En la cadena, encuentra'Regex'. -
Cuantificador
?: El patrónr"le?"coincide con la letra'l'seguida opcionalmente de'e'. El cuantificador?significa que el carácter anterior ('e') puede aparecer cero o una vez. Este patrón coincidirá tanto con'l'como con'le'dondequiera que aparezcan en la cadena.
Cada uno de estos patrones resalta una característica clave de las expresiones regulares: coincidencia de tipos de caracteres específicos, límites y elementos repetidos, lo que facilita extraer o analizar información de texto en Python.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla