[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: