juan escribiste:22. Construir una expresion regular que encuentre cualquier fecha del tipo 18-3-2004 o bien, 18/03/04.
Si tengo que crear esta expresión mi duda es ¿puedo usar corchetes para usar pipeline
No puedes usar corchetes. A lo sumo, tienes que usar paréntesis, o nada en absoluto si la expresión regular sólo tiene dos alternativas. Mira la
alternationjuan escribiste:, ¿y decir uno u otro?, y ¿cómo hago para que el "/", de separador de las fechas no lo reconozca como parte de los operadores de búsqueda?
Tienes que 'escaparlo' con un '\' delante de él. Mira la sección de
metacaracteresjuan escribiste:a=~ [/\w2//\w2//\w2]|[\w2-\w-\w2/];
El '2' está mal puesto. Es
{2}.
juan escribiste:Otra duda con esto de las expresiones regulares. Si yo quiero por ejemplo crear una expresión que busque cinco o más minúsculas, ¿estaría bien esto?
=~ /[a-z]{5,*}/
Es decir, ¿el rango {5,*} se le come cinco o más veces?
No, lo correcto es
{5,}, sin el asterisco.
juan escribiste:y si quiero hacer: "Cualquier letra seguida de una vocal seguida de la misma letra de nuevo, pongo
=~ /r[a-u] r/ ;
si quiero usar siempre la letra r. Usar [a-u], ¿interpreta que son a, e, i, o y u, o interpreta todos las letras de a hasta la u?
Efectivamente, [a-u] es la secuencia de letras desde la 'a' hasta la 'u'. Si quieres poner las vocales, pones
[aeiou].
juan escribiste:Pero si quiero poner "Cualquier letra seguida de una vocal seguida de la misma letra de nuevo"
= /w[a-u] \w/
pero esto significa que sería cualquier letra o dígito al inicio o al final, y ¿cómo haría para que sea siempre la misma?
Entonces, primero 'capturas' la primera vocal con un par de paréntesis, y luego, te refieres a esa letra capturada con el parámetro \1. Entra en la
página de manual de perlre y busca el párrafo que dice
"The bracketing construct ( ... ) creates capture buffers.". Ejemplo:
$x =~ /(\w)[aeiou]\1/;Aquí tienes un par de tutoriales en español.