2016-06-18 3 views
0

Ich benutze einige E-Mail-Extractor-Software, um (Überraschung Überraschung) E-Mails von Websites zu extrahieren. Es nutzt die regex:Wie Bilder aus Regex E-Mail-Extraktion auszuschließen

[A-Z0-9._%+-][email protected][A-Z0-9.-]{3,65}\.[A-Z]{2,4} 

Aber diese spuckt Bilder sowie E-Mails zB [email protected]

ich diese Regex ändern kann, aber ich kann nicht herausfinden, wie Streichhölzer auszuschließen endet in .png, .jpg usw.

Es gibt eine Menge Informationen über die Validierung von E-Mails - und wie schwer das ist - aber alles, was ich tun möchte, ist, Bilder aus der Ergebnisliste auszuschließen.

+0

Was ist die Sprache, die Sie verwenden? –

+0

Warum begrenzen Sie die TLDs auf 4 Zeichen? Siehe: http://www.iana.org/domains/root/db – Toto

+0

Ich kenne die Sprache nicht - es ist ein Stück Software (geschrieben von jemand anderem), die Text/HTML-Dateien basierend auf einer Regex, die kann vom Benutzer geändert werden. Offensichtlich ist der Standard-Regex veraltet - danke Toto. – Melchester

Antwort

0

Beschreibung

In Ihrem Textmuster der unerwünschte String ähnelt eine E-Mail-Adresse, aber endet bequem in jpg. Bei einem negativen Lookahead können wir also die Dateinamenserweiterungen ausschließen.

(?!\S*\.(?:jpg|png|gif|bmp)(?:[\s\n\r]|$))[A-Z0-9._%+-][email protected][A-Z0-9.-]{3,65}\.[A-Z]{2,4} 

Regular expression visualization

Beispiel

Live Demo

https://regex101.com/r/mU7bO3/2

Beispieltext

[email protected] [email protected] [email protected] 

Probe Spiele

[email protected] 
[email protected] 

Erklärung

NODE      EXPLANATION 
---------------------------------------------------------------------- 
    (?!      look ahead to see if there is not: 
---------------------------------------------------------------------- 
    \S*      non-whitespace (all but \n, \r, \t, \f, 
          and " ") (0 or more times (matching the 
          most amount possible)) 
---------------------------------------------------------------------- 
    \.      '.' 
---------------------------------------------------------------------- 
    (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     jpg      'jpg' 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     png      'png' 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     gif      'gif' 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     bmp      'bmp' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     [\s\n\r]     any character of: whitespace (\n, \r, 
           \t, \f, and " "), '\n' (newline), '\r' 
           (carriage return) 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     $      before an optional \n, and the end of 
           a "line" 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
)      end of look-ahead 
---------------------------------------------------------------------- 
    [A-Z0-9._%+-]+   any character of: 'A' to 'Z', '0' to '9', 
          '.', '_', '%', '+', '-' (1 or more times 
          (matching the most amount possible)) 
---------------------------------------------------------------------- 
    @      '@' 
---------------------------------------------------------------------- 
    [A-Z0-9.-]{3,65}   any character of: 'A' to 'Z', '0' to '9', 
          '.', '-' (between 3 and 65 times (matching 
          the most amount possible)) 
---------------------------------------------------------------------- 
    \.      '.' 
---------------------------------------------------------------------- 
    [A-Z]{2,4}    any character of: 'A' to 'Z' (between 2 
          and 4 times (matching the most amount 
          possible)) 
---------------------------------------------------------------------- 
+0

Vielen Dank für Ihre Antwort. Obwohl es perfekt im Tester funktioniert, funktioniert es nicht, wenn ich es an die Software anschließe - ironischerweise gibt es ein zusätzliches Beispiel eines Bildes zurück. Leider ist die Software eine "Black-Box", es gibt keine Möglichkeit zu sagen, auf welche Weise (oder mit welcher Sprache) die Regex verwendet wird. Kannst du an eine alternative Formel denken, die ich ausprobieren könnte? – Melchester

+0

Führt dies zu einem Fehler? Oder funktioniert es für einige Spiele und nicht für andere? Worum handelt es sich bei dem Betriebssystemtyp, in dem Ihre App ausgeführt wird? Wissen Sie, ob Java für Ihre App erforderlich ist? –

+0

Entschuldigung für die Verspätung, zu Ihnen zurück zu kommen. Nein, es gibt keinen Fehler. Die App läuft auf einem Windows-PC. Nicht sicher, ob Java erforderlich ist oder nicht. – Melchester

Verwandte Themen