elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 10:19  


Tema destacado: [Overclocking] Récords de overclock del foro

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  Retos de Expresiones Regulares
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Retos de Expresiones Regulares  (Leído 6,413 veces)
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Retos de Expresiones Regulares
« en: 3 Octubre 2010, 17:02 »

Buenas a todos, todavía no he visto el primer reto de expresiones regulares...
Las reglas:
  • Se permite cualquier lenguaje de programación que utilice expresiones regulares (preferiblemente scripting, ya que la mayoría conoce por lo menos 1)
  • Cuando se plantea un reto mas, el usuario que respondió al reto deberá explicar la expresión que utilizo, así los demás aprenden xD (opcional)
  • Si nadie responde al reto, el auto deberá autor responderse he iniciar un nuevo reto
  • El que realiza el reto puede poner condiciones para realizar el reto, ejemplo: prohibiendo el uso de modificadores
  • Los usuarios pueden descartar las expresiones planteada para resolver un reto si esta no puede funcionar bien en todos los casos

Bueno un reto facil, para empezar XD

Reto #1
Código:
Objetivo: Capturar Hola mundo
Cadena: 1!"#Hola mundo¬¬



« Última modificación: 3 Octubre 2010, 18:17 por ~ Yoya ~ » En línea

Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 2.968


/^$/


Ver Perfil WWW
Re: Retos de Expresiones Regulares
« Respuesta #1 en: 3 Octubre 2010, 17:31 »

Código
$string =~ m/.*#(\w.*)¬¬+.*/;
$string =~ m/(Hola mundo)/;
 

Reto #2:

Agregar un carácter al inicio de cada palabra usando una expresión regular.


« Última modificación: 3 Octubre 2010, 17:34 por Leo Gutiérrez. » En línea

Código
(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}
 

leorocko13@hotmail.com
https://github.com/leogtzr/
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: Retos de Expresiones Regulares
« Respuesta #2 en: 3 Octubre 2010, 18:16 »

Código
$cadena = 'hOla munDo xD';
$cadena =~ s/(?i)([a-z]+)(?-i)(?#this is perl)[\s\,]*/¬¬$1/g;
Resultado:
Código:
¬¬hOla¬¬munDo¬¬xD

Reto #3:

Eliminar las palabras de una cadena que contenga entre 3 y 4 palabras, incluyendo caracteres con tildes o raros, ejemplo: Ö ×Ø

Cadena:
Código:
xxxxxx DD DD@D #|!c asasØ a/aaaW 56a
« Última modificación: 3 Octubre 2010, 19:01 por ~ Yoya ~ » En línea

Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 2.968


/^$/


Ver Perfil WWW
Re: Retos de Expresiones Regulares
« Respuesta #3 en: 4 Octubre 2010, 06:54 »

No entiendo ese último, y honestamente si lo veo algo dificil no pienso contestar  :xD, tengo demasiada tarea.  :-(
En línea

Código
(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}
 

leorocko13@hotmail.com
https://github.com/leogtzr/
drvy | BSM


Desconectado Desconectado

Mensajes: 1.129


badstupidmonkey


Ver Perfil WWW
Re: Retos de Expresiones Regulares
« Respuesta #4 en: 5 Octubre 2010, 01:15 »

Código
<?php
$string = 'xxxxxx DD DD@D #|!c asasØ a/aaaW 56a';
$filter = '/[a-zA-ZÖר]{3,4}/';
$result = preg_replace($filter,'',$string);
print $result;
// $result = xx DD DD@D #|!c Ø a/ 56a
?>
 

No se me ocurre nada asi que..

Reto #3
Eliminar letras mayusculas y numeros asi como cualquier caracter tipo " , ñ , ( etc... de esta cadena:
Código:
o234m$g·%· we  31234 %· (will) ""· WEHATE/POLICE (r0ock) (yñço&u)

Saludos
En línea
Shell Root


Desconectado Desconectado

Mensajes: 2.456


Alex Jurado


Ver Perfil WWW
Re: Retos de Expresiones Regulares
« Respuesta #5 en: 5 Octubre 2010, 02:30 »

No creo que la RegExp de @drvy | BSM, funcione!
Código
Ê ÙÔ Ö ÓÒ ÁÒ ÓÖÑ ÓÒ ÐØ ÈÖ × ÓÒ ÄÓ× Ë ×Ø Ñ × Ù×ÕÙ Ê ×ÔÙ ×Ø
En línea

---
~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: Retos de Expresiones Regulares
« Respuesta #6 en: 5 Octubre 2010, 03:02 »

En realidad funciona ya que el texto a buscar en este caso es constante...

Bueno aquí la respuesta del reto 4
Código
<?php
$string = 'o234m$g·%· we  31234 %· (will) ""· WEHATE/POLICE (r0ock) (yñço&u)';
$result = preg_replace('/[^a-z]+/','',$string);
print $result;
//omgwewillrockyou
?>

Reto #5

Bueno vamos con la validación de datos usando expresiones regulares

nombre@dominio-es/en/....com/org/net/,etc...
La constante aqui son
@ - .

En el nombre puede contener caracteres alfanuméricos  y no puede contener mas de 5 como longitud el nombre.

En el dominio solo se aceptan letras excepto las e, i, t,z...

En el - solo se acepta letras pero no mas de dos y la primera debe ser en mayúscula y la segunda minúscula....

Después del punto se puede aceptar .com, .es, cl, ar, etc... pero deben ser minúscula

Ejemplo
 
Código:
YoyA@gmaal-ES.com ->True
Yo Ya@gmaail-Es.com -> False
Yoya@.com -> False
XD@xd-Xd.xd -> True

Diviértanse xD
« Última modificación: 6 Octubre 2010, 01:02 por ~ Yoya ~ » En línea

raul338


Desconectado Desconectado

Mensajes: 2.371


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Retos de Expresiones Regulares
« Respuesta #7 en: 5 Octubre 2010, 15:50 »

Código:
^(?![.,])(?:[\w!#$%&\'*+\/=?^_`{|}~\-]+(?:[.,][\w!#$%&\'*+\/=?^_`{|}~\-]+)*|(?>\".+\"))+(?![.,])@(?>\[(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2})\.){3}(?:(?>2(?>5[0-5]|[0-4]?\d)|1?\d{1,2}))\]|(?![.,])[\w!#$%&\'*+\/=?^_`{|}~\-]+(?:[.,][\w!#$%&\'*+\/=?^_`{|}~\-]+)*(?:\.[a-zA-Z]+))$

http://foro.elhacker.net/php/expresion_regular-t282130.0.html;msg1392077#msg1392077
Creo que te gane de antemano :P

Reto #6

Siguiendo con el tema de las validaciones, Hacer una expresion regular para validar una URI completa (url + directorios + GET por ejemplo)

http://www.elhacker.net <- True
foro.elhacker.net/post123.html <- True
elhack/juanking <- Flase
https://elh4xor.org/view?id=123 <- True
https://elh4xor.org/view?id=123#post2 <- True
https://elh4xor.org/view=123 <- False

PD: si se presentan varios, sera premiado (?) el que mas respete el RFC 2396
« Última modificación: 5 Octubre 2010, 15:54 por raul338 » En línea

raul338


Desconectado Desconectado

Mensajes: 2.371


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Retos de Expresiones Regulares
« Respuesta #8 en: 26 Octubre 2010, 23:15 »

Bueno,... viendo que nadie mas respondio :P la expreg que pedia era

Código:
^(?:(?>ht|f)tps?://)?(?:\w+[.-]\w+)+(?::\d+)?(?:\/[\w\-\.\?\,\'+&%\$_]*)*(?:\??(?:[\w\-\._]+=[\w\-\.\?\,\\'\/+%\$_]*&?)*)?(?:\#[\w]+)?$

Código:
^(?:
(?>ht|f)tps?://)?    -> Protocolo
(?:\w+[.-]\w+)+   -> Dominio y subdominios
(?::\d+)?             -> Puerto
(?:\/[\w\-\.\?\,\'+&%\$_]*)*  -> SubDirectorios
(?:\??(?:[\w\-\._]+=[\w\-\.\?\,\\'\/+%\$_]*&?)*)? -> QueryString
(?:\#[\w]+)?        -> Punto de anclaje
$

jeje.... no presento reto por ahora, asi que es libre :xD
En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.005



Ver Perfil WWW
Re: Retos de Expresiones Regulares
« Respuesta #9 en: 29 Octubre 2010, 11:02 »

@Reto 5
Esta es la mia:
Código:
^[\w\._\-]{2,}@[\w\._\-]{2,}\.[a-zA-Z]{2,4}(\.[a-zA-Z]{2,4})?$
Se que no incluye tantas validaciones como la de raul338 pero buneo... :rolleyes:

PD: raul338 a ver si un dia te pillo por el msn y me resuelves algna duda... ;)

DoEvents! :P
« Última modificación: 29 Octubre 2010, 13:57 por Mr. Frog » En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: Retos de Expresiones Regulares
« Respuesta #10 en: 30 Octubre 2010, 20:22 »

Haber quien plantea un nuevo reto xD :-(
En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.005



Ver Perfil WWW
Re: Retos de Expresiones Regulares
« Respuesta #11 en: 5 Noviembre 2010, 14:36 »

Haber quien plantea un nuevo reto xD :-(
No llores gatito :-* :laugh: :laugh: :laugh:

Reto #7
Sacar los números con decimales, puntos y negativos de un texto haciendo las validaciones necesareas.

Ej:
Citar
hola 3455345 sdfsdf 345435,3454 sdfsdf j ksjdh skdjfh 1.233.555,34534 asdasd as 344.34 qweqwe 23,324.324 qweqwe -234324324

Los validos serian :
Citar
3455345
345435,3454
1.233.555,34534
-234324324

A por ello! :D

DoEvents! :P
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 954



Ver Perfil
Re: Retos de Expresiones Regulares
« Respuesta #12 en: 5 Noviembre 2010, 15:20 »

Código
<?php
 
$txt = "hola 3455345 sdfsdf 345435,3454 sdfsdf j ksjdh skdjfh 1.233.555,34534 asdasd as 344.34 qweqwe 23,324.324 qweqwe -234324324";
preg_match_all("/([\d\-\,\.]+)/", $txt, $captura, PREG_SET_ORDER);
  foreach ($captura as $salida):
     echo $salida[1];
     echo "<br>";
  endforeach;
 
?>

Código:
3455345
345435,3454
1.233.555,34534
344.34
23,324.324
-234324324


Reto #8

Eliminar los espacios en blancos que estén en medio, las condiciones son que a la derecha debe estar una letra y a la izquierda un numero.

Cadena:
Código:
hola 3455345 sdfsdf 345435,3454 sdfsdf j ksjdh skdjfh 1.233.555,34534 asdasd as 344.34 qweqwe 23,324.324 qweqwe -234324324
En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.005



Ver Perfil WWW
Re: Retos de Expresiones Regulares
« Respuesta #13 en: 5 Noviembre 2010, 16:33 »

@Yoya
No vale esa RegExp para el Reto 7.
Solo puede captar números validos, fijate bien en el ejemlpo que puse ;)
Segun tu RegExp estos serian numeros validos (y no lo son):
Citar
344.34
23,324.324
El punto en este caso no se usara como decimal, sino para separar miles, asi:
Citar
76.234.345.456.788.999.000,345345345

Jeje, ahora no es tan facil  :-*

DoEvents! :P
En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.005



Ver Perfil WWW
Re: Retos de Expresiones Regulares
« Respuesta #14 en: 5 Noviembre 2010, 17:28 »

@Reto 7
Código:
(?![.,])-?(\d{1,3}\.|\d+)(\d{3}\.?\d{3})*(\,?\d+)?
Aqui dejo la mia, corregidme si veis algun fallo ;) , la he hecho corriendo que me tengo que marchar... :¬¬

DoEvents! :P
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[RETOS] Expresiones Regulares « 1 2 3 »
Programación General
criskapunk 30 2,467 Último mensaje 28 Agosto 2011, 09:30
por raul338
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines