0

E-Mail Adressen aus Text in Array

Hallo zusammen,

 

ich habe eine Anforderung in der ich aus einem Text E-Mail Adressen aus Texten herausfiltern und in ein Array speichern möchte.

 

Beispieltext:

 

xxx@test.de
Dies ist ein Test - yyy@test.de
zzz@we.de, admin@test.de

Mit extrakt bekomme ich zwar die erste E-Mail mit RegEx heraus, aber wie bekomme ich alle in ein Array. Stehe hier gerade auf dem Schlauch und hoffe auf Eure Hilfe.

extractx(text('Teilnehmer Emailliste'), "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+")

Viele Grüße

chris 

4 Antworten

null
    • rainless
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Chris,

    unter https://forum.ninox.de/t/83h2qy3 findest Du eine Anleitung, wie man mehrere Elemente aus einem Text ziehen kann. Dort geht es zwar um Buchstabenfolgen, aber da musst Du nur den Suchstring austauschen, um nach E-Mail-Adressen zu suchen. Am Ende wird ein komma-verknüpfter String ausgegeben. Den kannst Du aber mit split(string, ",") in ein Array aufteilen.

    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Chris,

    leider ist in Ninox das Flag g in extractx() für Mehrfachtreffer nicht möglich. Wie Lars schrieb, geht nur eine Umgehung (die aber sehr cool ist). Für die Syntax gebe ich noch eine Empfehlung mit auf den Weg, aber selbst die muß bei exotischen E-Mail Adressen oder Schreibfehler noch angepasst werden. Es ist nötig, den Punkt und Bindestrich und nicht nötig aber konsequent, auch den Unterstrich durch Backslash in ein Literal umzuwandeln, weil die ersten beiden auch Funktionen in regex besitzen. Gruß Mirko

    [a-zA-Z\_0-9\.\-]+@[a-zA-Z\_\-\.]+\.[a-z]{2,4}
    • Ninox-Professional
    • planoxpro
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo allerseits, ich hatte mal eine ähnliche Aufgabenstellung und habe sie damals so gelöst:

    let myTxt := replace(Text, "
    ", " ");
    let myA := split(myTxt, " ");
    let myB := [""];
    for i in myA do
        if contains(i, "@") then
            let myI := replacex(i, "^[+\-/\\(){}\[\]<>!§$%&=?*#€¿&_\,.:;]", "");
            myI := replacex(myI, "[+\-/\\(){}\[\]<>!§$%&=?*#€¿&_\,.:;]$", "");
            myB := array(myB, [myI])
        end
    end;
    join(myB, "
    ")
    

    Ergebnis wäre eine Liste der identifizierten E-Mail-Adressen:

    xxx@test.de
    yyy@test.de
    zzz@we.de
    admin@test.de

    Ist sicher nicht sehr elegant (bin kein regex-Profi), hat bei mir aber funktioniert. Die beiden replacex()-Zeilen dienen nur dazu, eventuelle Sonderzeichen am Anfang bzw. am Ende des Strings zu entfernen (wie in obigem Beispiel das Komma nach "zzz@we.de").

    • chris.3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo zusammen,

     

    dank Euch für die Antworten! Konnte damit nun erfolgreich alle E-Mails extrahieren.

     

    liebe Grüße 

    chris

Content aside

  • Status Answered
  • vor 1 JahrZuletzt aktiv
  • 4Antworten
  • 104Ansichten
  • 3 Folge bereits