No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Las clases predefinidas y construidas

6/29
Recursos

Las b煤squedas en las expresiones regulares funcionan en m煤ltiplos de la cantidad de caracteres que expl铆citamente indicamos.

Aportes 163

Preguntas 8

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Las b煤squedas en las expresiones regulares funcionan en m煤ltiplos de la cantidad de caracteres que expl铆citamente indicamos.

Regex Qu茅 hace Descripci贸n Inverso
. Character Cualquier caracter, selecciona cada uno de los caracteres
/d Digit Digits: (d min煤scula) Encuentra todos los d铆gitos (n煤mero) de 0 a 9, es equivalente a poner [0-9]. \D
/w Word All word characters, Encuentra todos los caracteres que son parte de una palabra, tanto letras (min煤sculas o may煤sculas) como n煤meros, es equivalente a poner [a-zA-Z0-9_]. \W
/s Space WhiteSpaces, Encuentra todos los espacios (los saltos de l铆nea y tabuladores tambi茅n son espacios). \S
[0-9] Specific Digit Encuentra todos los d铆gitos de 0 a 9.
[0-9a-zA-Z] Specific Word Character Encontrar谩 todos los caracteres que est茅n del 0-9 o que sean letras may煤sculas o min煤sculas (\w)
[a-zA-Z] nos encontrar谩 solamente las letras, tanto may煤sculas como min煤sculas.
\ Diagonal invertida Escapa los caracteres, permite que un car谩cter especial se muestre

Para la gente de windows con teclado en espa帽ol:

  • Alt+92 = \
  • Alt+91 = [
  • Alt+93 = ]
  • Alt+62 = >
  • Alt+60 = <
  • Alt+125 = }
  • Alt+123 = {

Buscando hexadecimales de 6 d铆gitos y con # al inicio

[#][0-9a-fA-F]{6}

Resumen definitivo
Del . nacen 3 tipos diferentes de clases predefinidas por la sintaxis de expresiones regulares: El d铆gito, la palabra, los espacios

Aqui encontraran a detalle el vocabulario completo de expresiones regulares: https://es.wikipedia.org/wiki/Expresi贸n_regular

Utilizamos 鈥溾 , no usen el slash com煤n(/) por que no les andar谩 la b煤squeda. para usarlo: Alt + 92

\d= Busca d铆gitos
\d\d\d = representa segmentos consecutivos segun la cantidad de \d que se coloquen
\s= busca espacios
\w= representa n煤meros y letras, exceptuando caracteres especiales
\t= representa el tabulador
.= representa el car谩cter 鈥.鈥, (NO la clase)

[0- 9]= representa todos los n煤meros del 0 al 9
[a-z] equivale a d, pero sin representar del 0 al 9
[A-Z]= Busca todos los caracteres desde la a a la z solo en mayusculas.

{} =Esta expresi贸n le dice al motor de b煤squeda que encuentre dos d铆gitos contiguos. Utilizando esta f贸rmula podr铆amos convertir el ejemplo 鈥淾\d\d/\d\d/\d\d\d\d$鈥 que serv铆a para validar un formato de fecha en 鈥淾\d{2}/\d{2}/\d{4}$鈥 para una mayor claridad en la lectura de la expresi贸n.

\d <- encuentra los caracteres num茅ricos
\w <- caracteres de 0-9, a-z, A-Z y _
\s <- espacios, tabs y saltos de linea
[0-9] <- encuentra los d铆gitos incluidos en el rango
[a-zA-Z0-9_] <- encuentra los caracteres en el rango equivale al \w
[a-fA-F0-9_.] <- encuentra hexadecimales y ademas guion bajo y el punto
La b煤squeda de hexadecimales de 6 d铆gitos seria:
[a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]

Mi soluci贸n al reto:

^#[a-fA-F0-9]{3,6}

^ representa el comienzo de la linea.
# debe contener ese caracter.
[] rango de caracteres ascii de la a a la z en may煤sculas y min煤sculas del 0 al 9.
{} longitud de la cadena de 3 a 6.

Y ahora que lo pienso mejor esta no es la mejor soluci贸n porque deber铆a ser longitud de cadena de 3 y 6 y no un rango de 3 a 6.
馃槂

Las Expresiones Regulares simplemente nos facilita resolver muchos problemas a la hora de programar, vale la pena estudiarlo.

Reto: Hacer un sistema que encuentre c贸digos Hexadecimales

#[a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]

Hay soluciones mas eficientes que esta, pero a la altura del curso esto es lo que se puede hacer.
Para una referencia de como hacer una soluci贸n m谩s precisa que esta pueden ir AQU脥.

**Clases predefinidas por la sintaxis de las expresiones regulares **

Clases predefinidas por la sintaxis de las expresiones regulares


  • Digito \d: Busca todos los d铆gitos
  • Palabra \w: Todo lo que puede ser una palabra, letras, d铆gitos y guiones bajo
  • Espacios y tab \s: Espacios en blanco

Clases construidas


Son aquellas que nosotros creamos con la ayuda de corchetes [], para hacerlo ponemos el rango de b煤squeda entre corchetes. Ejemplos:

  • [a-z] Busca todos los caracteres de la a la z, pero solo min煤sculas.
  • [a-zA-Z] Busca todos los caracteres de la a la z, incluye may煤sculas.
  • [0-9] Busca los n煤meros del 0-9
  • [4-5x-z] Busca los n煤meros y d铆gitos entre esos rangos (4 al 5 y x a la z)

Escapar: Le decimos a las expresiones regulares que no queremos usar la clase que representa un car谩cter si no su valor como el caso del . y se hace agreg谩ndole un slash (.)
Llaves {}: Le indicamos cuantos caracteres consecutivos debe de hacer match con nuestra cindici贸n.

(.) :busca caracteres
\d : busca digitos
\w: numeros y letras
\s : busca espacios

#([a-fA-F0-9]){6}```

Beco es un excelente profe!
Hasta el momento de todos los cursos que he tomado, explica claramente y de manera concisa, directo al punto.

Para quin use VSCode, podra pasarles que [A-Z] no trae las maysculas.

Es una configuracin del VS.

Con :
Match Case (Alt + C)  pueden ajustarlo.

Muy buena clase instructor Alberto, se entiende completamente que hacen las clases predefinidas de expresiones regulares y c贸mo podemos construir las propias. Ac谩 dejo la lista de las m谩s destacables de esta lecci贸n:

鈥 \d = Selecciona d铆gitos. Equivalente construida: [0-9]
鈥 \w = Resalta caracteres. Equivalente: [a-zA-Z0-9]
鈥 \s = Muestra los espacios en blanco. Equivalente: [ ]
鈥 [ \.] = Busca el s铆mbolo de punto
聽聽聽
Por cierto, esto fue lo que paso cuando trate de buscar los saltos de l铆nea (\n):
聽聽

Esta expresi贸n encuentra los hexadecimales
[a-fA-F0-9]+

Las b煤squedas en las expresiones regulares funcionan en m煤ltiplos de la cantidad de caracteres que expl铆citamente indicamos.
Las clases se identifican con un contra slash , y luego usar la clase: d, s, w.
Si queremos buscar digitos, n煤meros, cualquiera que sea, usamos la expresi贸n 鈥淺d鈥. Esto seleccionar谩 todos los n煤meros, e ignorar谩 los dem谩s car谩cteres.
Si quiero encontrar 3 n煤meros, usar茅 鈥淺d\d\d鈥, esto encontrar谩 a todos los m煤ltiplos de 3.
Para buscar car谩cteres alfanum茅ricos y el gui贸n bajo, se utiliza el \w. Para los acentos o las letras como la 帽 el \w no funciona.
Para que despu茅s de cualquier car谩cter alfanum茅rico tambi茅n reconozca un espacio, se utiliza el \w\s.
El espacio se reconoce con el \s.
Si quiero encontrar solo n煤meros, puedo utilizar [0-9] y es lo mismo que usar \d. Es m谩s potente, adem谩s que la b煤squeda se hace m谩s sencilla, ya que no necesariamente puedo utilizar para buscar todos los n煤meros, sino tambi茅n para definir cu谩les, por ejemplo: [6-9]. Y no es 煤nicamente con n煤meros, tambi茅n con letras [a-z] y en cualquier rango [h-t].
Para poder encontrar al car谩cter 鈥.鈥, no la clase operadora 鈥.鈥, se utiliza 鈥.鈥.
Para construir una clase entre diferentes rangos se utiliza entre corchetes, y sin espacio entre los rangos, por ejemplo [a-fA-T0-5_.]
#ABE045
Para buscar un c贸digo hex谩decimal, utilizo la siguiente clase [#A-F0-9]{6}

<[#][a-fA-F0-9]{6}>

Para los que han intentado hacerlo en la terminal con grep, pueden usar los equivalentes:

Regex Equivalente 驴Qu茅 hace? Descripci贸n
. . Caracter Cualquier caracter, selecciona cada uno de los caracteres.
\d [0-9] D铆gito (d min煤scula) Encuentra todos los d铆gitos (n煤meros) del 0 al 9
\w [0-9a-zA-Z_] palabra Encuentra todos los caracteres que son parte de una palabra, tanto letras (min煤sculas o may煤sculas), como n煤meros.
\s \\s Espacio Encuentra todos los espacios (saltos de l铆nea y tabuladores tambi茅n son espacios.

Hay una pagina web para probar estas expresiones regulares: https://regexr.com/

buscar hexadecimales de dos digitos (tabla ASCII)
[A-Fa-f0-9][A-Fa-f0-9]

BECO es genial!!!Ojala me diera clases en la uni jaja

C贸digo hexadecimal

/#[A-F0-9]{6}/i

Aqu铆 esta mi reto:

Trate de factorizar lo m谩s que pude
Lo que no entend铆 es que en los aportes colocan el numeral(#) pero no se en qu茅 cambia, alguien me podr铆a explicar porfa. Tambi茅n encontr茅 que colocaban 鈥淺b鈥, me podr铆an decir que indico con eso
Pd: yo uso Visual Studio Code

5. Mis apuntes sobre: 鈥淟as clases predefinidas y construidas鈥

-El d铆gito -> \d
-La palabra -> \w --> 鈥渁ll word characters鈥, de la A a la Z may煤sculas o min煤sculas,
los d铆gitos y el gui贸n bajo (_), no incluye letras acentuadas.
-los espacios -> \s (blank spaces) [el espacio com煤n, el espacio en tab]

  • 1. Ejemplo regex: El d铆gito
\d

-Explicaci贸n 1: Encuentra y selecciona todos los d铆gitos que existen en cada l铆nea.

  • 2. Ejemplo regex: Tres n煤meros (d铆gitos) consecutivos
\d\d\d

-Explicaci贸n 2: Encuentra y selecciona toda vez que existan 3 d铆gitos consecutivos.

  • 3. Ejemplo regex: A to Z (min煤sculas y may煤sculas) y _
\w

-Explicaci贸n 3: Encuentra y selecciona todos los caracteres que est茅n de la A a la Z,
en may煤scula o min煤scula, incluidos d铆gitos y tambi茅n el gui贸n bajo (_).

  • 4. Ejemplo regex: Espacio en blanco (blank space)
\s

-Explicaci贸n 4: Encuentra y selecciona todos los espacios en blanco.

  • 5. Ejemplo regex: Encuentra 4 palabras consecutivas (caracteres)
\w\w\w\w

-Explicaci贸n 5: Encuentra y selecciona toda vez que existan 4 caracteres consecutivos,
que sean de la A a la Z, en may煤scula o min煤scula, incluidos d铆gitos y tambi茅n el gui贸n bajo (_).

  • 6. Ejemplo regex: Encuentra todos los d铆gitos que est茅n del 0 al 9, es nuestra primera clase
[0-9]

-Explicaci贸n 6: Encuentra y selecciona todos los d铆gitos que est茅n del 0 al 9.

  • 7. Ejemplo regex: Encuentra todos los d铆gitos que est茅n del 6 al 9
[0-6]

-Explicaci贸n 7: Encuentra y selecciona todos los d铆gitos que est茅n del 0 al 6.

  • 8. Ejemplo regex: Encuentra todos los caracteres y d铆gitos y gui贸n bajo de la manera propuesta
[a-zA-Z0-9_]

-Explicaci贸n 8: Encuentra y selecciona: Todos los caracteres de la a a la z, de la A a la Z,
los d铆gitos del 0 al 9, y tambi茅n el gui贸n bajo.

  • 9. Ejemplo regex: Encuentra los caracteres y d铆gitos y gui贸n bajo y punto bajo ciertas condiciones
[a-fA-F0-9_\.]

-Explicaci贸n 9: Encuentra y selecciona: Todos los caracteres de la a a la f, de la A a la F,
los d铆gitos del 0 al 9, el gui贸n bajo (_), y el caracter punto (.).

  • 10. Ejemplo regex: Encuentra los caracteres y d铆gitos y gui贸n bajo y punto bajo ciertas condiciones
[a-fABCDF0-9_\.]

-Explicaci贸n 10: Encuentra y selecciona: Todos los caracteres de la a a la f, de la A a la F,
los d铆gitos del 0 al 9, el gui贸n bajo (_), y el caracter punto (.). (Da el mismo resultado que
el ejemplo anterior).


'
Reto de la clase:
Encontrar los hexadecimales en el archivo propuesto.

Proupuesta:

#\w\w\w\w\w\w

A ver, las representaciones en hexadecimal son de 3 o 6 caracteres para el caso de CSS, iniciando con el s铆mbolo de almohadilla, por lo que grupos menores a 3, grupos de 4 o 5, y grupos mayores de 6 deben ser descartados. Con esas condiciones, e investigando, la REGEX podr铆a ser:
#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})
o
#([A-Fa-f\d]{6}|[A-Fa-f\d]{3})

Aunque tambi茅n hay que recordar que en ciertos lenguajes de programaci贸n, las constantes de n煤meros hexadecimales empiezan con 0x, lo cual empieza a complicar las cosas鈥 pero uno se divierte.

yo use esta

/^#?([a-F0-9]{6}|[a-F0-9]{3})$/```

^= the begining of the line
/=delimiters-required for regular expressions
#= number sign(s)
?=followed by zero or one 
{}=then exactly six
|=or
$=and finally the of the line

Para colores hexadecimales:

#[0-9a-fA-F]{6}

traduccion al lenguaje natural:

la cadena de caracteres debe iniciar con #, seguido de 6 caracteres que sean letras minusculas o mayusculas de la A a la F o n煤meros del 0 al 9

. selecciona todos los caracters
el \ con alt+92 en windows si no tienes teclado en ingles

\d selecciona estrictamente digitos
\w selecciona estrictamente letras y digitos
\s selecciona espacios

es facil recordar que d es por digits, w es por words, s es por spaces, osea su respectivo en ingles

el [] con alt+91 (para el [) y alt+93 (para el ]) en windows si no tienes teclado en ingles

[0-9] busca digitos de manera mas estricta que usando \d
[a-z] busca letras de manera estricta

se usa \ para escapar caracteres especiales como . como lo harias en javascript

las expresiones entre [] se denominan clases

Para mi funciona en la busqueda hexadecimal
[#a-fA-F0-9]{7}

#[a-f0-9]{6}

Esta es mi soluci贸n para colores hexadecimales

#[0-9A-Fa-f]{3,6}

La s es el caracter s, mientras que \s es para los espacios en blanco. La w es el caracter w, mientras que \w es para las letras, d铆gitos y _.
La d es el caracter d, mientras que \d es para los d铆gitos.
Sin embargo, el . es refiere a todos los caracteres, mientras que el . es el caracter punto.
Eso fue lo que m谩s confuso me result贸. 驴Por qu茅 no . se refiere a todos los caracteres y . se refiere al punto como tal?

Para encontrar el patron de hexadecimal con 3 o 6 caracteres se puede usar #[a-fA-F0-9]{3,6}

Buen reto el de la besuqueada de los hexadecimales tome una lista de colores en hexadecimal con caracteres y binarios y para solo buscar los hexadecimales constru铆 esta clase [#a-fA-F0-9], hasta aqu铆 pod铆a encontrar los hexadecimales pero tambi茅n encontraba palabras que tuvieran alg煤n d铆gito o car谩cter dentro de mi clase y descubri las {} que ayudan a indicar que solo se deben repetir n cantidad de veces para ser considerados en la b煤squeda y Vuuuaaala (voil脿)!!!

[#a-fA-F0-9]{7}

De esta forma se puede expresar la b煤squeda sin haber fijado diferencia entre may煤sculas y min煤sculas #[0-9a-f]{6}

Las clases predefinidas y construidas


Clases predefinidas

Las clases predefinidas en expresiones regulares son conjuntos de caracteres que representan categor铆as comunes de caracteres. Estas clases hacen que sea m谩s f谩cil y conveniente buscar patrones espec铆ficos en el texto sin tener que enumerar cada car谩cter individualmente. Las clases predefinidas son una caracter铆stica 煤til y poderosa de las expresiones regulares, ya que te permiten crear patrones m谩s concisos y legibles.

Aqu铆 hay algunas de las clases predefinidas m谩s comunes:

  1. \d: Coincide con cualquier d铆gito num茅rico del 0 al 9.
  2. \D: Coincide con cualquier car谩cter que no sea un d铆gito num茅rico.
  3. \w: Coincide con cualquier car谩cter de palabra, que incluye letras (may煤sculas y min煤sculas), d铆gitos y el guion bajo _.
  4. \W: Coincide con cualquier car谩cter que no sea un car谩cter de palabra.
  5. \s: Coincide con cualquier espacio en blanco, incluyendo espacios, tabulaciones y saltos de l铆nea.
  6. \S: Coincide con cualquier car谩cter que no sea un espacio en blanco.

Estas clases predefinidas se utilizan dentro de expresiones regulares para crear patrones que se ajusten a ciertos tipos de caracteres. Por ejemplo:

  • La expresi贸n regular \d{3}-\d{2}-\d{4} buscar铆a patrones de n煤meros en el formato de un n煤mero de seguro social (como 123-45-6789).
  • La expresi贸n regular \w+ coincidir铆a con cualquier palabra en el texto.
  • La expresi贸n regular \s+ buscar铆a uno o m谩s espacios en blanco consecutivos en el texto.

Usar clases predefinidas hace que las expresiones regulares sean m谩s poderosas y compactas, permiti茅ndote crear patrones m谩s complejos con menos caracteres escritos.


Clases construidas

Las clases de caracteres construidas son conjuntos personalizados de caracteres que puedes definir dentro de una expresi贸n regular para buscar coincidencias espec铆ficas. Aunque t茅cnicamente no son 鈥渃lases predefinidas鈥, son un componente importante de las expresiones regulares y te permiten especificar conjuntos de caracteres a medida seg煤n tus necesidades.

Aqu铆 hay algunos ejemplos de c贸mo se construyen estas clases de caracteres:

  1. [...]: Clase de caracteres: Puedes definir una clase de caracteres encerrando los caracteres que deseas coincidir entre corchetes. Por ejemplo, [aeiou] coincidir谩 con cualquier vocal en min煤scula.

  2. [^...]: Clase de caracteres negada: Agregando un s铆mbolo de circunflejo (^) al principio de una clase de caracteres, puedes crear una clase negada. Por ejemplo, [^0-9] coincidir谩 con cualquier car谩cter que no sea un d铆gito num茅rico.

  3. [a-z], [A-Z], [0-9]: Rangos de caracteres: Puedes especificar rangos de caracteres al utilizar guiones dentro de una clase de caracteres. [a-z] coincidir谩 con cualquier letra min煤scula, [A-Z] con cualquier letra may煤scula, y [0-9] con cualquier d铆gito num茅rico.

  4. [...]: Combinaci贸n de caracteres: Puedes combinar m煤ltiples clases o rangos dentro de una misma clase de caracteres. Por ejemplo, [a-zA-Z] coincidir谩 con cualquier letra, tanto min煤scula como may煤scula.

  5. \: Escape de caracteres especiales: Si deseas incluir caracteres especiales como -, ] o [ dentro de una clase de caracteres, debes escaparlos con una barra invertida \.

Estos son solo algunos ejemplos de c贸mo puedes construir clases de caracteres personalizadas en expresiones regulares. Estas clases te brindan flexibilidad para definir patrones espec铆ficos de coincidencia en funci贸n de los caracteres que necesitas buscar en el texto.

Pude llegar a 2 soluciones la primera m谩s 鈥渟encilla鈥 pero propensa a escapes de datos es:

[#][0-9A-Fa-f]{6}

Y la segunda soluci贸n aplicando clases para asegurarnos que el n煤mero sea completo y no solo este dentro de una palabra m谩s grande:

\b[0-9A-Fa-f]+\b

Si el reto es buscar todos los catacteres de la tabla ASCII por sus valores hexadecimales, la respuesta es:

[\x00-\x7F]
/^[0-9A-Fa-f]+$/

Esta expresi贸n regular busca coincidencias en una cadena que consista 煤nicamente en caracteres hexadecimales (0-9, A-F o a-f).

^: Representa el inicio de la cadena.

[0-9A-Fa-f]: Define una clase de caracteres que incluye d铆gitos del 0 al 9 y letras de la A a la F, tanto en may煤sculas como en min煤sculas.

+: Indica que debe haber uno o m谩s caracteres que coincidan con la clase de caracteres definida.

$: Representa el final de la cadena.

En resumen, esta expresi贸n regular verificar谩 si una cadena est谩 compuesta 煤nicamente por caracteres hexadecimales.

Ya hab铆a usado las expresiones regulares en algunos proyectos, pero no sab铆a exactamente que ese era su nombre y todas las posibilidades que nos brinda, sin duda comenzar茅 a aplicarlas y tratar de sacar el m谩ximo provecho.

Reto: Expresi贸n regular tipo Clase Construida para encontrar los caracteres seguidos que pertenecen al grupo Hexagecimal.

[a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]

Hice esta expresi贸n regular para encontrar 2 n煤meros hexadecimales:

[0-9A-F][0-9A-F]
[#]?[a-fA-F0-9]{2}

Esta fue mi soluci贸n

Vengo del curso; Terminal y Linea de comandos.

cuando inicie este curso, me sentia enrdado hasta que llegue a esta clase y relacione todo lo que habia escuchado鈥 las regex tienen poner muchachos!!!

([0-9a-fA-F]{6})

\ backslash

Las expresiones regulares son esencialmente las mismas a traves de los diferentes lenguajes.

Para los que probaron [A-Z] y [a-z] en VSC y no les funcion贸, un tip:

  • Activen la opci贸n 鈥淢atch Case鈥 es un icono en la b煤squeda que es 鈥淎a鈥 o con la tecla Alt+C.

Es un comportamiento raro de VSC, que ya han reportado , pero parece ser que al d铆a de hoy (20/09/22) no han cambiado.

Yo digo que se merece, esta vez VSC una mentada de madre.

Para realizar b煤squedas mas especificas
[a-z]
[A-Z]
[0-9]
[a-zA-Z0-9]

Punto (.) denota un car谩cter cualquiera
\d : Representa un d铆gito
\w: Representa una letra
\s: Representa un espacio

Pero porque llama palabras a las letras? Es un l铆o

Para que no se confundan les comparto la correcci贸n de los signo en English
slash "/"
backslash 鈥溾

La soluci贸n en Java se escribe de la siguiente manera

"#([\\dA-F]{1,})"

Soluci贸n al reto en Java

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        String cs = "abababF110";
        Pattern pattern = Pattern.compile("[\\dA-F]{1,}");
        Matcher matcher = pattern.matcher(cs);
        boolean matchFound = matcher.find();
        System.out.println("string length: " + cs.length());
        if(matchFound) {
            System.out.println("Match found");
            System.out.println("first match: " + matcher.group());
            System.out.println("start index first match: " + matcher.start());
            System.out.println("end index first match + 1: " + matcher.end());
        } else {
            System.out.println("Match not found");
        }
    }
}

/**
 * string length: 10
 * Match found
 * start char first match: F110
 * start index first match: 6
 * end index first match + 1: 10
 */

Es interesante el uso de las expresiones regulares para especifcar los digitos y las letras, hay mucho por aprender y espero que al final el curso cumpla mis espectativas.

Una alternativa al uso de vim para practicar regex es https://regex101.com/
Espero les sea 煤til

import re

fh = open(r"C:\Users\Alfonso Zapata\jupyter\Cursos\Junio 2022\Curso de expresiones regulares - platzi\REGEX-master\liners.txt", "r").read()

fh

# for line in re.findall("\d", fh):
#     print(line)

line = re.findall("[0-9a-fA-F]{6}", fh) 
print(line)

Unico detalle malo del curso

Usar algo tan basico como un editor de texto para explicar las expresiones regulares, porque no hacerlo usando un IDE (sea cual sea, en el idioma que sea) o alguna herramienta que permita hacerlo de una manera mas profesional, vengo del curso de Machine learning y es decepcionante que este curso lo hayan agregado como finalizacion del area principiante dando entrada al area intermedia de la carrera. La estandarizacion en algunos casos no es buena, ya que veo que muchos vienen del curso de linea de comandos, lo cual no esta a la par a de donde venimos los de machine learning, la recomendacion es crear un curso aparte con herramientas mas avanzadas o quitarlo e indicar que aprendamos regex por medios propios los que venimos de alla.

import re

fh = open(r"C:\Users\Alfonso Zapata\jupyter\Cursos\Junio 2022\Curso de expresiones regulares - platzi\REGEX-master\liners.txt", "r").read()

fh

# for line in re.findall("\d", fh):
#     print(line)

line = re.findall("\d", fh) 
print(line)

Mi soluci贸n al reto:

^#[a-fA-F0-9]{6}
1
12
123
1234
12345
12345678910
12345678910a
13453243
url: https://www.instagram.com/p/BXB4zsUlW5Z/?taken-by=beco.mx
url: http://instagram.com/p/blablablah
url: http://itam.mx/test
http://instagram.com/p/blablablah
csv1,csv2,csv3,csv4,csv5
Rodrigo Jim茅nez Guti茅rrez
5556581111
56-58-11-12
302-345-9876
esto.es.un.mail+gmail@mail.com
dominio.com
[LOG ENTRY] [ERROR] The system is unstable
[LOG ENTRY] [WARN] The system may be down
[LOG ENTRY] [LOG] Everything is OK
[LOG ENTRY] [LOG] [user:@beco] Logged in
[LOG ENTRY] [LOG] [user:@beco] Clicked here
[LOG ENTRY] [LOG] [user:@beco] Rated the app
[LOG ENTRY] [LOG] [user:@beco] Logged out```

Para encontrar los tipos de hexadecimales: [0-9A-Fa-f]

Usando el c贸digo hexadecimals para ascII: [\u0030-\u0039\u0041-\u0046\u0061-\u0066]

Le env铆o mi soluci贸n del reto:
[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]

NOTA: \. es para referirse al caracter . y /. es para referirse a la clase .

Esto es para CSS y funciona bien, pero espero ver c贸mo se puede mejorar en la pr贸xima clase, solo puse un #antes y cree la clase y la repet铆, pero dice el maestro que se puede hacer sin repetir multiples veces la clase
#[a-fA-F1-9][a-fA-F1-9][a-fA-F1-9][a-fA-F1-9][a-fA-F1-9][a-fA-F1-9]

Encontrar hexadecimales

[a-fA-F0-9]{3,6}

Este curso es incre铆ble. El profesor es BUEN脥SIMO.

Mi soluci贸n al reto de busqueda Hexadecimal

^[a-zA-Z0-9]{3,6}$

Mi aporte con la resoluci贸n para encontrar decimales, si hay alguna otra soluci贸n m谩s eficiente, no duden en comentar.

/#[a-f0-9]{3}([a-f0-9]{3})?/gi
  • Primero, coloco el michi (#) porque todo hexadecimal comienza con ese caracter.
  • Coloco la fracci贸n [a-f0-9]{3}, la cual significa que busque letras desde la A a la F y n煤meros del 0 al 9. Despu茅s tiene {3}, que significa que se repite 3 veces. Ya que algunos hexadecimales he visto que lo escriben como #fff o #ffffff.
  • Coloco ([a-f0-9]{3})? que significa lo mismo, la diferencia que lleva par茅ntesis para agruparlo y colocar al final el signo de interrograci贸n (?), lo cual significa que es opcional.
  • Por 煤ltimo, lleva las letras gi, la g significa global, y la i nos ayuda para el case-sensitive.

.
Ese ser铆a mi aporte, muchas gracias 馃槃

Imagina que quieres buscar las direcciones de memoria ( printf("%p",puntero) ) que genera una salida de puntero en C.
Tipo鈥

Reserva de memoria(en &n=0x7ffea9beb0c0) 
  el nodo 0 con dir 0x555d9d17c2b0                                                   
   &n->next=0x555d9d17c2b8                                       
  n=0x555d9d17c2b0  &n=0x7ffea9beb0f0   

Solucion:
/0x[0-9a-fA-F]*
" 0x " : caracteres de inicio de la cadena
" [0-9a-fA-F] " : rango de caracteres esperados despu茅s del inicio
" * " Repite el rango (sin " * " solo buscar铆a el primer car谩cter contiguo a " 0x " )

reto hexadecimales encontrados
link

Siguiendo hasta lo que hemos visto en la clase, seria de esta manera, se que se pueden indicar las repteciiones con {n,n} pero aun no llegamos a eso

[a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]

Quedo izi pizi


[a-fA-F1-9]{6}

M谩s adelante en el curso, espero aprender a hacer que antes de esta expresi贸n, pueda ser un # o nada. Ojala encuentre la forma 馃槃

Mi solucion quedo de la siguiente forma:

[#][0-9a-fA-F]{6}

#: el caracter con el que inicia
0-9: el rango de numeros
a-f A-F: las letras que puede tener
6: la longitud de caracteres

Mi peque帽a aportaci贸n
/[a-fA-F0-9]{6}

Tengo una duda compa帽eros y profe, no se si sea observaci贸n o correcci贸n. Si usamos el car谩cter car谩cter 鈥.鈥 (cualquier car谩cter) dentro de una funci贸n [] no es necesario escaparlo como lo hace el profe en el ejemplo.
Es decir as铆: [a-fABCDEF0-5_.]
o as铆: [.]
Recupera todos los 鈥.鈥

Un peque帽o ejemplo buscando el c贸digo hexadecimal junto con el car谩cter # 馃悧馃悧

Miren este 鈥渃horizo鈥
[a-zA-Z_{}0-9 [.]馃槙/-?+@,-帽]

馃槢馃槢馃槢

Si bien los colores con el formato #fff se pueden interpretar, al final el formato interpretado es de #ffffff por eso hice el reto de esta forma #[0-9A-Fa-f]{6}[\n\s;]

[a-fA-F0-9]

Las expresiones regulares son escencialmente las mismas en los distintos lenguajes de programaci贸n. Aunque pueden haber algunas diferencias.

  • \d -> Encuentra todos los d铆gitos
  • [0-9] Es m谩s potente para buscar d铆gitos (podemos espec铆ficar entre qu茅 n煤meros buscar)
  • \w -> 鈥淎ll word characters鈥, de la aA a la zZ y el gui贸n bajo
  • \s -> Encuentra todos los espacios

Hagamos algo m谩s complejo y poderoso: [a-zA-Z0-9_\.] -> Encuentra letras en may煤sculas y min煤sculas, adem谩s, n煤meros y tambi茅n el caracter punto. De la 鈥榓鈥 a la 鈥榸鈥, en may煤sculas y min煤sculas.

Expresi贸n regular para encontrar valores hexadecimales: #[a-fA-F0-9]{3,6} -> Empieza con 鈥#鈥, tiene letras de la a a la f en may煤sculas y min煤suclas, del 0 al 9 y entre 3 y 6 d铆gitos.

Mi soluci贸n:

^#[0-9a-fA-F]{3,6}$

Lo malo es que toma tambi茅n los de 4 y 5 d铆gitos, no solo los de 3 y 6

Les paso por ac谩 una combinaci貌n de palabras con hexadecimales para que puedan hacer la practica en sus editores.

#FFFFFF #FFF
AZUR #F0FFFF #FFFFFF
CREMA #F5FFFA #FFFFFF
NIEVE #FFFAFA #FFFFFF
MARFIL #FFFFF0 #FFFFFF
BLANCO FANTASMA #F8F8FF #FFFFFF
BLANCO FLORAL #FFFAF0 #FFFFFF
AZUL ALICIA #F0F8FF #FFFFFF
CIAN CLARO #E0FFFF #CCFFFF
MEL脫N VERDE #F0FFF0#FFFFFF #FFFFFF
AZUR #F0FFFF #FFFFFF
CREMA #F5FFFA #FFFFFF
NIEVE #FFFAFA #FFFFFF
MARFIL #FFFFF0 #FFFFFF
BLANCO FANTASMA #F8F8FF #FFFFFF
BLANCO FLORAL #FFFAF0 #FFFFFF
AZUL ALICIA #F0F8FF #FFFFFF
CIAN CLARO #E0FFFF #CCFFFF
MEL脫N VERDE #F0FFF0
#DDA0DD #CC99CC
GRIS #BEBEBE #CCCCCC
VERDE CLARO #90EE90 #99FF99
VIOLETA #EE82EE #FF99FF
AMARILLO #FFFF00 #FFFF00
TURQUESA #40E0D0 #33CCCC
MADERA FORNIDA #DEB887 #CCCC99
AMARILLO VERDE #ADFF2F #99FF33
BRONCEADO #D2B48C #CCCC99
TURQUESA MEDIO #48D1CC #33CCCC
SALM脫N CLARO #FFA07A #FF9966
AGUAMARINA MEDIO #66CDAA #66CC99
GRIS OSCURO #A9A9A9 #999999
ORQU脥DEA #DA70D6 #CC66CC
VERDE MAR INTENSO #8FBC8F #99CC99
AZUL CIELO INTENSO #00BFFF #00CCFF
MARR脫N ARENA #F4A460 #FF9966
DORADO #FFD700 #FFCC00
VERDE PRIMAVERA MEDIO #00FA9A #00FF99
CAQUI OSCURO #BDB76B #CCCC66
ACIANO AZUL #6495ED #6699FF
ROSA CALIENTE #FF69B4 #FF66CC
SALM脫N OSCURO #E9967A #FF9966
TURQUESA OSCURO #00CED1 #00CCCC
VERDE PRIMAVERA #00FF7F #00FF66

Mi respuesta al reto:[#][a-fA-F0-9]{3,6}

Algo rar铆simo es que en la consola de ubuntu si jala cuando yo hago el \w pero no cuando hago el \d, alguien sabe porque?

/////////////////////////////////////////////////////////////////////////////////
///////////////////// Las clases predefinidas y construidas /////////////////////
/////////////////////////////////////////////////////////////////////////////////

// D铆gitos: '\d'

var e = /\d/; // Me encuentra todos los d铆gitos individualmente

var e = /\d\d\d/; // Me encuentra 3 d铆gitos juntos

var e = /[0-9]/ // Esto es equivalente a '/d' porque 0-9 son todos los d铆gitos

var e = /[2-8]/ // Me encuentra todos lso d铆gitos del 2 al 8

var e = /\D/; // Me encuentra todo lo contrario a un d铆gito

// Palabras: '\w', Incluyen los d铆gitos, letras min煤sculas y may煤sculas y guien bajo '_' excepto los acentos

var e = /\w/; // Me encuentra todo lo que pueda ser parte de una palabra

var e = /\w\w\w/; // Me encuentra 3 caracteres juntos parte de una palabra

var e = /[a-zA-Z0-9_]/; // Esto es equvalente a '\w'

var e = /[a-z]/; // Me encuentra todas la letras min煤sculas

var e = /[A-Z]/; // Me encuentra todas la letras may煤sculas

var e = /[e-m]/; // Me encuentra todas la letras desde la 'e' hasta la 'm'

var e = /\W/; // Me encuentra todo lo contrario a lo que pueda ser parte de una palabra
var e = /[a-tA-F0-5\.]/; // Aqu铆 agregamos '\.' para decir que tambi茅n seleccionaos el caracter '.'
// 'A-F' es equivalente a 'ABCDEFG' pero si queremos ser espec铆ficos con ciertas letras como por ejemplo:'ACFGY'
// '2-5' es equivalente a '2345' pero si queremos ser espec铆ficos con ciertos n煤meros como por ejemplo: '1587'

// Espacios: '\s'

var e = /\s/; //Me encuentra todos los espacios individualmente

var e = /\S/; // Me encuentra todo lo contrario a un espacio

La expresion para los hexadecimales seria:

^[0-9a-fA-F]{6}```


Quisiera compartir tambien un link para el que le interese investigar un poquito mas sobre las expresiones regulares, lo encontre muy interesante: https://baulderasec.wordpress.com/desde-la-consola/shell-en-unixlinux-sh-ksh-bash/6-expresiones-regulares/

Codigo en java

/*

  • To change this license header, choose License Headers in Project Properties.
  • To change this template file, choose Tools | Templates
  • and open the template in the editor.
    */
    package strings;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
*

  • @author Sem-6-INGENIERIAINDU
    */
    public class Strings {

    /**

    • @param args the command line arguments
      */
      public static void main(String[] args) {
      String mensaje = 鈥淗ola como te encuentras sofia 22鈥;
      Pattern pattern = Pattern.compile("\d");
      Matcher matcher = pattern.matcher(mensaje);
      while (matcher.find()) {
      System.out.println("掳 n煤mero: " + matcher.group());
      }

    }

}

Entiendo que los hexadecimales tienen d铆gitos, letras may煤sculas y min煤sculas, 驴c贸mo hago la clase para que eval煤e uno d铆gito y letras?

Pensar铆a en esto [a-zA-Z0-9] pero no s茅 c贸mo decirle que son solo 6.

Me gustar铆a aclarar que usamos no el 鈥渟lash鈥 -> 鈥/鈥 que habitualmente esta en la parte superior de todo teclado num茅rico, se usa es el 鈥淏ack-Slash鈥 que es para el otro lado 鈥淺鈥 este, en un sistema Windows lo sacamos con 鈥淎lt+92鈥 y en Unix 鈥淎ltGr + ?鈥 normalmente esta encima de la letra 鈥減鈥 el 鈥?鈥.
Espero este bien explicado ekiZde, Saludos desde Colombia :3

\u para ubicar las letras

[0-9a-fA-F]{6}

Mi solucion es mas corta

#\w{3,6}

Mi solucion es mas corta

#\w{3,6}

Usando \s , mientras que en VSCode muestra 6 鈥渕atches鈥:

en Sublime Text 2 muestra 20 鈥渕atches鈥:

鈥淏aia, baia鈥

Solucion al reto

#[a-fA-F0-9]{6}

Mi solucion:

#[a-zA-Z0-9]{6}```

As铆 quedar铆a de una manera m谩s estricta para hexadecimal 馃槃

^[a-fA-F0-9]{6}$