pattern - regex positive lookahead example
Cómo usar regex lookahead negativo (2)
¿Qué significa el punto?
"[._a-zA-Z0-9]+@[._a-zA-Z0-9]+.[._a-zA-Z0-9]+"
^
here
Coincide con el signo a. Si lo quita, su expresión regular original sin anticipación funcionará.
Por otra parte !
es un personaje especial en bash (expansión de la historia). Tienes que hacer una barra invertida para usarlo literalmente.
Estoy tratando de obtener las direcciones de correo electrónico de un archivo usando egrep -o -e
y teniendo problemas con las direcciones al final de una línea.
Aquí está mi expresión regular:
egrep -o -e "[._a-zA-Z0-9]+@[._a-zA-Z0-9]+.[._a-zA-Z0-9]+" ~/myfile.txt
Me doy cuenta de que esto no captará todas las variaciones de una dirección de correo electrónico, pero si la dirección se encuentra al final de una línea, esto es lo que obtengo:
user@[email protected]/ul
Así que pensé que probaría un aspecto negativo, pero no tengo idea de cómo usarlo correctamente. He leído algunas cosas en línea, pero estoy confundido por cómo funciona.
Esto es lo que he intentado:
egrep -o -e "(?!//[._a-zA-Z0-9]+@[._a-zA-Z0-9]+.[._a-zA-Z0-9]+)" ~/myfile.txt
Bash falla con el event not found: //[._a
¿Alguna sugerencia?
El !
está siendo interpolado como un comando de expansión de historia en bash. Debe usar comillas simples en lugar de comillas dobles para evitar esto.
Sin embargo, debe tener en cuenta que su versión de grep
tampoco puede admitir el lookahead negativo. En este caso, necesita una herramienta de expresiones regulares más potente, como perl
o ack
.