/ / Eliminando todo lo que está fuera de regex en notepad ++ - php, regex, email, notepad ++, extract

Eliminar todo lo que está fuera de expresiones regulares en notepad ++ - php, regex, correo electrónico, notepad ++, extracción

He mirado a través de múltiples preguntas aquí yHe estado cerca de obtener una respuesta, sin embargo, algunos de ellos están haciendo exactamente lo contrario de lo que necesito que hagan. Sin embargo, esta es una buena señal, ya que muestra que estoy progresando. Lo que estoy tratando de hacer es hacer un masivo lista de correo electrónico de una base de datos que encontré. Cada línea contiene texto aleatorio antes y después de las direcciones de correo electrónico para las que no tengo un uso práctico, y me gustaría deshacerme de ellas para tener una lista de correo electrónico limpia. Cada línea se ve así: (tuve que censurar parte de la información)

3e:visito****@hotmail.com:88.247.216.***:s*****1

Cada línea es casi exactamente como esta y necesito una forma de eliminar todo antes y después de lo que marca la expresión regular.

En esta pregunta encontré una expresión regular que selecciona perfectamente todos los correos electrónicos.

b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4}b

También en esta pregunta encontré algo para poner en el Reemplazar con en Notepad ++, elimina los correos electrónicos y deja atrás todo lo que no sea los correos electrónicos. Entonces, en esencia, necesito algo que haga exactamente lo contrario a esto.

Además, hay aproximadamente 10 millones de líneas. (Base de datos 844MB) para pasar por lo que debe ser en su mayoría automatizado y fácil de hacer varias veces para ahorrar tiempo.

Gracias por adelantado.

Respuestas

1 para la respuesta № 1

La técnica que puede ayudarte es dos pasos uno:

  • al principio, necesitas colocar tu expresión regular dentro (?s)^.*?(YOUR_REGEX)[^n]* (escríbelo en el Encontrar que campo), y use el 1 (referencia al texto capturado con su patrón original) en la Reemplazar con campo.

  • luego, elimine el texto que no necesita al final manualmente.

Así que, en tu caso, usa

(?s)^.*?(b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4}b)[^n]*

Optimizándolo un poco [A-Za-z0-9_] puede ser reemplazado con w Aquí), puede utilizar la siguiente expresión regular con . matches newline opción ON:

^.*?(b[w.%+-]+@[w.]+.pL{2,4}b)[^n]*

Explicación:

  • ^ - Inicio de línea en Notepad ++
  • .*? - cualquier carácter, cero o más apariciones, el menor número posible hasta el límite de la primera palabra
  • (b[w.%+-]+@[w.]+.pL{2,4}b) - tu pareo patrón dentro de un par de paréntesis no escapados para que una captura se almacene en el búfer:
    • b - límite de palabra
    • [w.%+-]+ - 1 o más caracteres de palabras (letras, dígitos o un guión bajo)
    • @ - un @ símbolo
    • [w.]+ - 1 o más caracteres de la palabra o .
    • . - un solo punto
    • pL{2,4} - 2 a 4 letras
    • b - límite de palabra al final
  • [^n]* - 0 o más caracteres distintos a una nueva línea

enter image description here


1 para la respuesta № 2

Como se indica en el comentario de @stribizhev, Necesito hacer lo siguiente:

1: Agregue la siguiente expresión regular en la Encontrar que caja:

(?s)^.*?(b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4}b)[^n]*

2: Agregue lo siguiente a la Reemplazar con caja:

1

Y eso es todo, muchas gracias a todos!


0 para la respuesta № 3

Si su archivo está formateado y se ha separado por :, tal vez esta expresión regular funcione mejor para usted:

[^:]*:([^:]*):.*

y reemplazarlo con

1

De esta manera, puede obtener beneficios para sus separadores.

Comprobar aquí