La estructura de los dos diccionarios usados para tal fin: english.txt y espanol.txt. El primero tiene por cada línea una palabra en minúscula mientras que el segundo tiene una estructura "Palabra/..." donde el caracter "/" indica el final de la palabra y la primera letra puede o no ser Mayúscula.
La solución en inglés resultó ser la palabra "strengths" con longitud de 9 caracteres, una sóla vocal y válida. En el idioma español resultó la palabra "grill" de longitud 5. De longitud 4 resultan clan, flan, gran, plan, vals, tren clon, flor y cruz.
La expresión regular usada para el diccionario en inglés :
^s([^aeiouy]{0,50})a([^aeiouy]{0,50})$
^s([^aeiouy]{0,50})e([^aeiouy]{0,50})$
^s([^aeiouy]{0,50})i([^aeiouy]{0,50})$
^s([^aeiouy]{0,50})o([^aeiouy]{0,50})$
^s([^aeiouy]{0,50})u([^aeiouy]{0,50})$
^s([^aeiouy]{0,50})y([^aeiouy]{0,50})$
La expresión regular usada para el diccionario en español :
^([^AEIOUYaeiouy]{0,50})[aA]([^AEIOUYaeiouy]{0,50})(?=/)
^([^AEIOUYaeiouy]{0,50})[eE]([^AEIOUYaeiouy]{0,50})(?=/)
^([^AEIOUYaeiouy]{0,50})[eI]([^AEIOUYaeiouy]{0,50})(?=/)
^([^AEIOUYaeiouy]{0,50})[oO]([^AEIOUYaeiouy]{0,50})(?=/)
^([^AEIOUYaeiouy]{0,50})[uU]([^AEIOUYaeiouy]{0,50})(?=/)
El shellscript que realiza la búsqueda :
#!/bin/bash
##################################################################
#
# Prueba de Expresiones Regulares con grep
# [ Cesar Rivera ]
#
# Probado en distribución Fedora
#
##################################################################
vocales='a e i o u' ;
q="'" ;
v1=0 ;
for vocal in $vocales ; do
gx="grep -P ^s([^aeiouy]{0,50})$vocal([^aeiouy]{0,50})\$ \
--color /usr/share/dict/words";
ex=`$gx`;
for palabra in $ex ; do
v2=`echo ${#palabra}` ;
if [[ $v2 -gt $v1 ]]; then
v1=$v2 ;
echo $palabra $v1 ;
fi ;
done ;
done ;
Resultado:
sacks 5
sanghs 6
scarphs 7
schmaltz 8
strengths 9
La última palabra mostrada "strengths" resultó ser la mayor. Curiosamente, en el idioma inglés, las palabras largas encontradas que poseen una sóla vocal comienzan con "s".Fin del ejercicio de expresión regular
No comments:
Post a Comment