2016-11-21 11:56 GMT-05:00 José Miguel (sio2) <sio2.sio2+lista.deb...@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}$