miércoles, 29 de junio de 2016

* - Encuentra un elemento cero o más veces

Como el metacarácter ?, el * se usa para señalar un elemento opcional; sin embargo, al contrario que ?, el elemento puede aparecer varias veces, no sólo una vez. Digamos que queremos ver si una cadena era una frase; es decir, que comienza con una mayúscula, luego contiene cualquier número de letras mayúsculas o minúsculas y espacios, y termina con un punto. Para encontrar esta definición (muy básica) de una frase, podríamos usar una expresión regular como ésta:

[[:upper:]][[:upper:][:lower:] ]*\.

La expresión consta de tres elementos: un expresión entre corchetes conteniendo la clase de caracteres [:upper:], una expresión entre corchetes conteniendo tanto la clase de caracteres [:upper:] como [:lower:] y un espacio, y un punto escapado por una barra invertida. El segundo elemento está seguido de un metacarácter *, de forma que tras la letra mayúscula del principio de nuestra frase, cualquier cantidad de letras mayúculas o minúsculas y espacios que le sigan serán encontrados:

[me@linuxbox ~]$ echo "This works." | grep -E '[[:upper:]][[:upper:][:lower:] ]*\.'
This works.
[me@linuxbox ~]$ echo "This Works." | grep -E '[[:upper:]][[:upper:][:lower:] ]*\.'
This Works.
[me@linuxbox ~]$ echo "this does not" | grep -E '[[:upper:]][[:upper:][:lower:] ]*\.'
[me@linuxbox ~]$

La expresión coincide en los dos primeros test, pero no en el tercero, ya que carece de la mayúscula al principio y del punto al final.

No hay comentarios:

Publicar un comentario