No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Los contadores {1,4}

8/29
Recursos

Lo que vamos a aprender en esta clase es comenzar a generalizar nuestras búsquedas, a ser específicos cubriendo grandes cantidades de caracteres sin tener que escribir de forma repetitiva como sería poner por ejemplo “\d\d\d\d\d\d\d\d…”

Aportes 95

Preguntas 12

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Antes de saber esto para limitar información en un formulario habría escrito muchísmo código jajajaja recorrer vector, verificar, etc.

La última expresión que utilizo el profe beco se puede simplificar encerrando la clase base en paréntesis y después escribiéndole al lado llaves indicando la cantidad de parejas de números que queremos encontrar, así:

(\d{2,2}[\-\. ]?){3,3}

Como me gusta la manera de explicar de este profesor. Ese “ni madres” no tiene perdida jajaa

mi expresion regular para buscar numero argentinos:
+54 388 5377055 -> [+]?(\d{2,4}[ ]?){2,4}
Explicacion: pueden o no empesar por un caracter, en esta caso es el simbo mas(+),despues agrupame los digitos en 2 que es la minima cantidad y en 4 para la maxima cantidad y que se aplique lo que tenga en mi clase( [ ] ) osea un espacio vacio, pero pueden o no tener ese espacio en blanco, si lo tiene esta bien y sino esta bien tambien por eso pongo el signo ? despues de la clase y por ultimo que me agrupe los agrupamiento que hice, me explico, si tengo 4 agrupamiento de 2 digitos quiero los 4 agrupamiento formen un solo agrupamiento osea un solo match

Es buena la enseñanza pero debo decir que me cuesta entender a la primera, por suerte estos son videos, que las veos especialmente para este curso en particular, un minimo de dos veces para agarrar o interiorizar lo que se enseña. Hasta ahora nada que observar en la clse, todo bien!

Si quisiéramos encontrar una IP V4 estas son las regExp que podríamos utilizar.

(\.?\d{1,3}){4,4}
(\d\.?{1,3}){4,4}

wow! La verdad se veian muy intimidantes cuando las vi por primera vez pero hasta ahorita no es tan complejo y parece ser muy util el uso de las regex.

Esto fue una explicación “potente”!

Codigo en java que hace matcher en gruops

/*

  • 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 = “Hola como te encuentras sofia 22”;
      Pattern pattern = Pattern.compile("\d{2}");
      Matcher matcher = pattern.matcher(mensaje);
      while (matcher.find()) {
      System.out.println("Matcher: " + matcher.group());
      }

    }

}

Mi expresión regular para buscar números telefónicos:

[0]?\d{2,4}[\-\. ]?\d{2,4}[\-\. ]?\d{2,4}[\-\. ]?\d{2,4}[\-\. ]?\d{2}

**Traducción: ** Puede o no empezar con cero, {luego lleva un grupo de dígitos que puede variar entre 2 y 4 números, luego puede o no tener “-”, “.” o “ ” } (x4) tiene un grupo de números de 2 dígitos.

Para encontrar IPs ya sean separados por guion o por punto (en el 10.100.x.x rango): \d{2,2}[-.]\d{1,3}[-.]\d{1,3}[-.]\d{1,3}

Vuelvo a recomendar el siguiente website para tener claro como funcionan las REGEXR. Me ha parecido genial poder hacerlo y entender lo que explica Alberto aquí.

En principio, se quería hacer match solamente con números de 10 dígitos ya que en México los manejan así. Debido a lo anterior, la expresión sería de la siguiente manera:

  • Caso 1

5556581111
56-58-11-12-34
56.58.11.12.33

(\d{2,2}[\-\.]?){5,5}$

  • Caso 2

302-345-9876
143-457-90-77
096-907-11.12

(\d{3,3}[\-\.]?){2,2}(\d{2,2}[\-\.]?){2,2}$

En caso de que quieran tener una expresión que haga match tanto con el primer caso como con el segundo. Necesitan unir la expresión regular utilizando el operador lógico “o” ( | ).

  • Caso 3

5556581111
56-58-11-12-34
56.58.11.12.33
302-345-9876
143-457-90-77
096-907-11.12

(\d{2,2}[\-\.]?){5,5}$|(\d{3,3}[\-\.]?){2,2}(\d{2,2}[\-\.]?){2,2}$

En fórmulas de excel se pueden usar expresiones regulares?

A mí me ayudo verlo por grupos Ejemplo. \d{2,4} Para mí significa encontrar y hacer grupos de 2 a 4 dígitos

Para encontrar fechas con el formato: DIA de MES del AÑO , ejemplo 22 de Marzo del 2020,

\d+\s[a-zA-Z]+\s[a-zA-Z]+\s[a-zA-Z]+\s\d+

Hice esta expresión que te busca números de celular colombianos 😃

3\d{2,2}[\-\.\s]?\d{3,3}[\-\.\s]?\d{2,2}[\-\.\s]?\d{2,2}

Para no escribir la expresion 5 veces, podemos utilizar los contadores sobre toda la expresion

(\d{2,2}[\.\- ]?){5}

Algunos Metacaracteres, o caracteres reservados en regex:

/////////////////////////////////////////////////////////////////////////////////
////////////////////////////// Los contadores {a,b} /////////////////////////////
/////////////////////////////////////////////////////////////////////////////////

// Es un contador que indica de manera precisa la cantidad que se repita un tipo de caracteres
// {a,a}:  nos indica el intervalo de caracteres que quiero que aparezcan
// Hay lenguajes que se puede colocar un sólo valor en el corchete, ejemplo {a}

// Ejemplo:

var e = /\d\d\d/; // Encuentra tres dígitos seguidos pero podemos ser más resumidos

var e = /\d{2,2}/; // Encuentra dos dígitos seguidos

var e = /\d{2,5}/; // Encuentra mínimo dos y máximo 6 dígitos seguidos

var e = /\d{4,}/; // Encuentra mínimo dos y hasta infinitos dígitos seguidos

// Ojo, los caracteres reservados de las regex deben escaparse con '\', ejemplo '\.', '\-'

// Ejemplo télefono 10 digitos separados por '-', '.'
var e = /\d{2,2}\-?\d{2,2}\-?\d{2,2}\-?\d{2,2}\-?\d{2,2}\-?/; // Sólamente me toma el guión '-'

var e = /\d{2,2}[\-\.]?\d{2,2}[\-\.]?\d{2,2}[\-\.]?\d{2,2}[\-\.]?\d{2,2}[\-\.]?/; // Agregamos el punto '.' creando una clase específica '[\-\.]'

var e = /(\d{2,2}[\-\.]?){5,5}/; // La expresión que se repite 5 veces (\d{2,2}[\-\.]?) se puede reducir

var e = /(\d{2,2}[\-\.\s]?){5,5}/; // Si el télefono contiene además espacios cada dos dígitos

var e = /(\d\d[\-\.\s]?){4,4}\d\d/; // También se traduce a esto

// Tips: los contadores también se puede resumir a los delimitadores de la siguiente manera
// * ~ {0,}
// + ~ {1,}
// ? ~ {0,1}

los corchetes redondos yo los conozco también como llaves.

Lo que vamos a aprender en esta clase es comenzar a generalizar nuestras búsquedas, a ser específicos cubriendo grandes cantidades de caracteres sin tener que escribir de forma repetitiva como sería poner por ejemplo “\d\d\d\d\d\d\d\d…”
Utilizar n veces \d es frustrante, en especial si se utilizan 10, 20, 50 matches las que se desean. Para evitar esta frustración se utilizan los contadores, y se utilizan con corchetes, el primer dígito sería limite inferior, le sigue una coma, y por último el límite superior, por ejemplo, quiero encontrar entre 2 y 5 digitos, utilizo \d{2,5}, si quiero encontrar múltiplos de 3 dígitos, utilizaría \d{3}.
Si no me interesa el número máximo de matches, puedo dejarlo sin delimitador superior, ejemplo \d{4,}, este ejemplo dice que se encuentran todos los match de dígitos que tengan 4 números o más.
Para hacer un match de un número telefónico de 10 digitos, con diferentes formatos se utiliza de la siguiente manera.
3144161089
31-44-16-10-89
31.44.16.10.89
\d{2,2}[-.]?
31 44 16 10 89 -> \d{2,2}[-.\s]?

super class, sufrí pero aprendí mucho 💪 

![](

Excelente clase explicación paso a paso instructor Alberto, al combinar las clases predefinidas, las que construimos, los limitadores y los contadores, podemos especificar bastante las búsquedas. Acá comparto una que realice para un correo electrónico:
   

Si están en vscode, y no elimina un único caracter reservado guión ( - )

usen corchetes para eliminarlo:

d{2,2}[-]

(\d{2,2}[\.-]?){5,5}

Se me ocurrió agregar paréntesis para repetir cada grupo de dos números y un guion. Si funciona.
(\d\d[-. ]?){4,4}

Expresión para buscar números de 10 dígitos que pueden o no estar separados por guiones, espacios o puntos.

(\d[\-\.\s]*){10,10}

12345
12345678910
12345678910a
13453243
url: https://www.instagram.com/p/BXB4zsUlW5Z/?taken-by=beco.mx
csv1,csv2,csv3,csv4,csv5
Rodrigo Jiménez Gutiérrez
5556581111
56-58-11-12-54
56.58.11.12.54
565 811 1254
302-345-9876

(\d{2}[\-\.\s]?){2}\d{2}

Realice una expresión regular en java que acepta una forma telefónico mas amplio

^([0-9]{2,3}[\\  .-]?){4,5}$

Para ver como funciona la expresión regular dejo este enlace

Creo que seria mas provechoso y eficas si en cada video o despues de cada tanto, se pueda dar como una tarea, practica o desafio asi el nivel de retencion seria mejor.

el . (punto) es conveniente escaparlo si lo quieres encontrar en el texto .

el - (guión) es conveniente escaparlo si lo quieres encontrar en el texto -

  • los contadores puedes ponerse para 2 dígitos como {2}
  • es mejor poner {2,2} cota inferior y cota superior.
  • el segundo funciona siempre el primero en algunos sitios puede fallar.

Teléfono local venezolano

/02[0-9]{2}-[0-9]{7}/

Celular venezolano

/04[0-9]{2}-[0-9]{7}/

Hasta hace poco, cuando veia ER me resultaba bastante deafiante, ahora veo que no son tan feas como crei jaja

Muy Interesante

Hice la expresión regular para los números de teléfono que se muestran en la clase y esto fue lo que me salió (funciona muy bien)

/\d{2,3}\-?\.?\d{2,3}\-?\.?\d{2,4}\-?\.?[0-9\.\-]+/gm 

Esta seria la manera de buscar un numero de mi pais, (+1 809-748-1237)

[0-9\-?\+?1\' '{1}]{15}

Los contadores {1,4}

Podemos especificar cuántas veces aparece un caracter.

  • \d{min,max} -> donde ‘min’ es el número mínimo de ocurrencias y ‘max’ es el número máximo de ocurriencias.
  • \d{2,2}[\-\.\ ]? -> Encuentra dígitos, que pueden o no estar separados por 0 o 1 espacio, guión o punto, de longitud 2 cada uno de ellos.

Se me acaba de ocurrir la forma de validar un RFC de una persona física (clave con que estás registrado ante el fisco en México para pagar impuestos, ej: SAPM840719TH1) al momento de ingresarlo en cualquier aplicación.

Si alguien sabe de una manera más sencilla, el comentario es bienvenido

[A-Z]{4}[0-9]{2}[01][0-9][0-3][0-9][0-9A-Z]{3}

muy claro, ahora sí se puede decir que “no son dos problemas” jeje

Woow esto si esta empezando a verse demasiado potente

De hecho se puede hacer solo como \d{2} sin el segundo 2

6. Mis apuntes sobre: "Los delimitadores: +,*,? "

Resumen hasta hoy#p132:
\w - caracteres de palabras
\d - dígitos
\s - espacios/invisibles en blanco
[0-9] ~ \d
[0-9a-zA-Z_] ~ \w
* - greedy - todo cero o más veces
+ - uno o más
? - cero o uno, en otro contexto (Sean los menos posibles)

  • 1. Ejemplo regex:
.*

-Explicación 1: Encuentra un caracteres y sigue seleccionando hasta el final de la linea.
’
’

  • 2. Ejemplo regex:
\d+

-Explicación 2: Encuentra un dígito, luego 1 o más hasta que no haya.
’
’

  • **3. Ejemplo regex: **
\d*[a-z]

-Explicación 3: Encuentra y selecciona: Toda vez que se inicie o no con un dígito,
y siga y termine con una letra de la a a la z.
’
’

  • 4. Ejemplo regex:
\d*[a-z][a-z]?

-Explicación 4: Encuentra y selecciona: Toda vez que haya o no un dígito, luego
haya una letra de la a a la z, y luego haya o no una letra.
’
’

  • 5. Ejemplo regex:
\d*[a-z]?s\d*

-Explicación 5: Encuentra y selecciona: Cero o muchos dígitos, y cero o una letras de la
a a la z y una letra ‘s’ y cero o muchos dígitos.
’
’

7. Mis apuntes sobre: “Los contadores {1,4}”
{1,2} -> Los contadores tienen una cota inferior y una superior, indicando el mínimo y máximo
de resultados que se quieren encontrar.

  • 1. Ejemplo regex: Contadores
\d{2,2}

-Explicación 1: Encuentra y selecciona [match], mínimo dos y máximo 2 dígitos.
’
’

  • 2. Ejemplo regex: Contadores 2
\d{2,10}

-Explicación 2: Encuentra y selecciona [match], mínimo dos y máximo 10 dígitos.
’
’

  • 3. Ejemplo regex: Contadores sin límite
\d{4,}

-Explicación 3: Encuentra y selecciona [match], mínimo cuatro y máximo sin límite de dígitos.
’
’

  • 4. Ejemplo regex: Contadores seguidos de más patrones
\d{2,2}-?\d{2,2}-?\d{2,2}-?\d{2,2}-?\d{2,2}

-Explicación 4: Encuentra y selecciona [match], mínimo 2 y máximo dos dígitos, seguidos
de cero o un guión, luego lo mismo cuatro veces, y finaliza con mínimo dos y máximo dos dígitos.
’
’

  • *4. Ejemplo regex: Combinando contadores
\d{2,2}[\-\.]?

-Explicación 4: Encuentra y selecciona [match], mínimo 2 y máximo dos dígitos, seguidos
de cero o un guión(-) o punto(.).
’
’

  • 5. Ejemplo regex: Combinando contadores
\d{2,2}[\-\. ]?\d{2,2}[\-\. ]?\d{2,2}

-Explicación 5: Encuentra y selecciona [match], mínimo 2 y máximo dos dígitos, seguidos
de cero o un guión(-) o punto(.) o espacio en blanco ( ), tres veces lo mismo.
’
’

Que no cuando queremos también añadir espacio a la clase [] tenemos que escaparlo usando \s? Porque en el video pone espacio sin escapar

EN LENGUAJES FORMALES Y AUTOMATAS,
EN COMPILADORES ,
SE USAN DEMASIADO LAS EXPRESIONES REGULARES
Estaría muy bien cursos de lo anterior mencionado con Python

1-Los contadores {1,4} sirven para abstraer el número de ocurrencias que estamos buscando.

{x,y} busca minimo x y maximo y
\d{2,2}[-. ]? busca parejas de numero con su separador

Me equivoco o lo hizo un poco mas dificil al final eso de los numeros? para estos numeros por ejemplo es mas facil con este codigo

55-10-24
331026
88.24.25
41 55 74
+51 94 85 77

+?\d.*

también les puedes decir llaves

Excelente explicación!

Estos ejemplos que estaban inicialmente:

5556581111
56-58-11-12
302-345-9876

hacen match con esta expresión:

(\d{2,4}[\-\. ]?){3,3}\d{2,4}

Cuando se usan corchetes sin contadores el valor por defecto es uno( un caracter).

Muy útil los separadores.

Excelente.

Que interesante las expresiones regulares. Utilizare en mis proyectos(validación de formularios).

Para encontrar un número de teléfono sin separadores o con cualquier separador:

\d{2,4}[\W]?

también puede ser: (\d{2,}[\-\.\s]?){4,}

Un resumen de los números telefónicos de 10 dígitos que pueden estar separados de par en par por guión, espacio o punto es:

(\d{2,2}[\-\. ]?){5,5}

consigue una palabra con dos silabas

[bcdfghjklmnñpqrstvwxyz]{0,2}[aeiou]{1}[bcdfghjklmnñpqrstvwxyz]{0,2}[aeiou]{1}[bcdfghjklmnñpqrstvwxyz]{0,3}

El equivalente a la expresión que nos mostro en la busqueda del telefono \d{2}-?\d{2}-?\d{2}-?\d{2}-?, se puede utilizar esta (\d{2}-?){4,4}

demasiado útil este tema. en la universidad he tenido que hacer códigos de validación de contraseñas y usuarios con patrones especificos y me ha tocado meter varias lineas de código que el patron encajara, con esto se hace más fácil.

Si bien a veces siento que por querer dejar clara la idea le da mas vueltas de las necesarias en el curso.
Valoro mucho que lograron que algo Coco de los sistemas se entienda muy fácilmente.
tanto que ahora no entiendo por qué no las entendía antes si son tan sencillas.

Se empieza a complicar 😮

Mucho se puede aprender y optimizar con las expresiones, reguladores y contadores, una herramienta que te simplifica la vida 😄

Super

Alberto lo explica de forma sencilla. Excelente.

Se puede englobar toda la operacion para ponerla con un contador?
Algo asi como :

[\d{2,2}[\-\.]?]{5,5}

{4,10} cantidad de caracteres a buscar, es decir logitud Minimo y maxima
\d{2,2}[-.]? numeros telefonicos con diferentes formatos

Mi solución: \d{2}([-.\s]?\d{2}){4}
Si hay 2 números y luego 4 repeticiones de ‘.’ o ‘-’ o ’ ’ y 2 números.
xx y cuatro veces -xx -> 12 -34-56-78-90 == 12-34-56-78-90

wow

Como hago para tener una expresion regular que tenga digitos, letras en mayuscula y minuscula y numeros pero sin importar el orden?

Muy bueno

\d{2,3}[\-\.\s]?\d{2,3}[\-\.\s]?\d{2,4}[\-\.]?\d{2,2}?\d?[\-]?\d?\d?
5556581111
568-58-11-128
302-345-9876
302.345.9876
302.345.98.76
302 345 8769
55-56-58-11-11

En esta pagina también pueden hacer sus experimentos con regex, pueden encontrar explicación de qué es lo que hace y pueden guardarlos.
https://regexr.com/

Con este regex podría encontrar numeros con un formato entre guiones entre con digitos unidos por 2 y hast por 4 y de 9 a 10 digitos en tota

\d{2,4}-?\d{2,4}-?\d{2,4}-?\d{2,4}-?

Para buscar IPs como 127.0.0.1
(\d{1,3}(\.?)){1,4}

Mis aportes

\d{2,2}: Con esto buscamos de a 2 digitos es decir que tenga minimo 2 digitos y maximo 2 digito

\d{2,5}: Con esto buscamo minimo 2 digitos con un maximo de 5 digitos.

\w{4,}: Con esto buscamos caracteres que tengan solo 4 caracteres.

\w{10,10}: Buscamos que tengan solo 10 caracteres

\d{2,2}[-.]? : Buscamos digitos que tengan 2 digitos y ademas que puedan tener un - o . al final

Brain Fuck topic for me.

RegEx Para numeros moviles de Colombia:

<h1>Contadores</h1>

\d{0,1}
Escribimos la clase o caracter a buscar luego se abren corchetes y se introducen las cotas, inferior y superior.

La expresión regular:

\d{2,2}[\-\.]?\d{2,2}[\-\.]?\d{2,2}[\-\.]?

También lo pude resolver así:

(\d{2,2}[ .-]?){5,5}

Hay manera de resumir esto?
Se me ocurria algo asi, pero no funciona haha:

[\d{2,2}[\-\. ]{0,1}]{3,3}

Esto se esta poniendo potente!

Genial!

En vez de hacer el [-. ] mejor hay que usar un punto normal y ya esta

No sé si alguien ya lo explico pero lo anexo aquí en los comentarios, en la expresión regular no se necesita tener el {2,2} para que entienda que es un valor que va de dos dígitos sino que se puede dejar así {2} y se obtiene el mismo resultado.

Estoy enamorado de las expresiones regulares

Espero sea de aporte, se acepta retro.