Re: Una de expresiones regulares
2016-11-21 11:56 GMT-05:00 José Miguel (sio2)
<sio2.sio2+lista.debian@gmail.com>:
> Un saludo:
>
> A ver si alguno sabe cuál es la causa de que falle lo siguiente:
>
> Se pretende crear una regex de tipo ERE que concuerde con ilas líneas que
> contengan cuatro palabras constitutidas por letras. Mi solución es esta:
>
> ^\W*(?[[:alpha:]]+\b\W*){4}$
>
> Pero resulta que no me funciona bien:
>
> $ grep -E '^\W*(?[[:alpha:]]+\b\W*){4}$'<<<"affffff b cx"
> affffff b cx
>
> Sin embargo, la expresión PCRE correspondiente sí funciona bien:
>
> $ grep -P '^\W*(?:[[:alpha:]]+\b\W*){4}$'<<<"affffff b cx"
>
> y no devuelve salida. Por más que miro y remiro la expresión regular, me
> parece que está bien. ¿A alguien se le ocurre algo, o es error que debo
> achacar a grep?
>
Esto me funciona:
$ cat foo
dos tres cuatro
uno dos tres cuatro
uno dos tres cuatro cinco
$ grep -E '^(\w+\s+){3}\w+$' foo
uno dos tres cuatro
O más simple si no te importa si hay espacios al final: ^(\w+\s*){4}$
Reply to: