Tema destacado: [Overclocking] Récords de overclock del foro
Autor
|
Tema: Retos de Expresiones Regulares (Leído 6,413 veces)
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 954
|
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 #1Objetivo: 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
Mensajes: 2.968
/^$/
|
$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
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 954
|
$cadena = 'hOla munDo xD'; $cadena =~ s/(?i)([a-z]+)(?-i)(?#this is perl)[\s\,]*/¬¬$1/g; Resultado: ¬¬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: xxxxxx DD DD@D #|!c asasØ a/aaaW 56a
|
|
|
|
« Última modificación: 3 Octubre 2010, 19:01 por ~ Yoya ~ »
|
En línea
|
|
|
|
|
|
drvy | BSM
Desconectado
Mensajes: 1.129
badstupidmonkey
|
<?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 #3Eliminar letras mayusculas y numeros asi como cualquier caracter tipo " , ñ , ( etc... de esta cadena: o234m$g·%· we 31234 %· (will) ""· WEHATE/POLICE (r0ock) (yñço&u) Saludos
|
|
|
|
|
En línea
|
|
|
|
Shell Root
Desconectado
Mensajes: 2.456
Alex Jurado
|
No creo que la RegExp de @drvy | BSM, funcione! Ê ÙÔ Ö ÓÒ ÁÒ ÓÖÑ ÓÒ ÐØ ÈÖ × ÓÒ ÄÓ× Ë ×Ø Ñ × Ù×ÕÙ Ê ×ÔÙ ×Ø
|
|
|
|
|
En línea
|
 ---
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 954
|
En realidad funciona ya que el texto a buscar en este caso es constante... Bueno aquí la respuesta del reto 4 <?php $string = 'o234m$g·%· we 31234 %· (will) ""· WEHATE/POLICE (r0ock) (yñço&u)'; $result = preg_replace('/[^a-z]+/','',$string); print $result; //omgwewillrockyou ?> Reto #5Bueno 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 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
Mensajes: 2.371
La sonrisa es la mejor forma de afrontar las cosas
|
^(?![.,])(?:[\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#msg1392077Creo que te gane de antemano Reto #6Siguiendo 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
Mensajes: 2.371
La sonrisa es la mejor forma de afrontar las cosas
|
Bueno,... viendo que nadie mas respondio  la expreg que pedia era ^(?:(?>ht|f)tps?://)?(?:\w+[.-]\w+)+(?::\d+)?(?:\/[\w\-\.\?\,\'+&%\$_]*)*(?:\??(?:[\w\-\._]+=[\w\-\.\?\,\\'\/+%\$_]*&?)*)?(?:\#[\w]+)?$ ^(?: (?>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 
|
|
|
|
|
En línea
|
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.005
|
@Reto 5Esta es la mia: ^[\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... PD: raul338 a ver si un dia te pillo por el msn y me resuelves algna duda...  DoEvents! 
|
|
|
|
« Última modificación: 29 Octubre 2010, 13:57 por Mr. Frog »
|
En línea
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 954
|
Haber quien plantea un nuevo reto xD 
|
|
|
|
|
En línea
|
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.005
|
Haber quien plantea un nuevo reto xD  No llores gatito  Reto #7Sacar los números con decimales, puntos y negativos de un texto haciendo las validaciones necesareas. Ej: 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 : 3455345 345435,3454 1.233.555,34534 -234324324 A por ello!  DoEvents! 
|
|
|
|
|
En línea
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 954
|
<?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; ?> 3455345 345435,3454 1.233.555,34534 344.34 23,324.324 -234324324 Reto #8Eliminar 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: 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
Mensajes: 1.005
|
@YoyaNo 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): 344.34 23,324.324 El punto en este caso no se usara como decimal, sino para separar miles, asi: 76.234.345.456.788.999.000,345345345 Jeje, ahora no es tan facil  DoEvents! 
|
|
|
|
|
En línea
|
|
|
|
Psyke1
Wiki
Desconectado
Mensajes: 1.005
|
@Reto 7(?![.,])-?(\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! 
|
|
|
|
|
En línea
|
|
|
|
|
|