Perl Regex für eine einzelne URL und für eine Liste von URLs

  • wget -Otest.html https://www.cormes.de/impressum perl -nE 'if (/\bmailto:([\w\.]+\@[\w\.]+)/) {say $ 1}' test.html

    Um eine E-Mail-Adresse zu extrahieren, funktioniert diese Regex einwandfrei.

    Sind mein anderer Regex-Name, Nachname und meine Postanschrift korrekt?

    perl -nE 'if (/ Straße: \ [A-Za-z] [0-9] /) {sagen $ 1}' test.html

    perl -nE 'if (/ PLZ und Ort: \ [0-9] {5} - [A-Za-z]) / {say $ 1}' test.html

    perl -nE 'if (/Vorname und Nachname: \ [A-Za-z] [A-Za-z]) / {say $ 1}' test.html

    Sind der Regex-Name, der Nachname und die Postanschrift meiner anderen korrekt?Wie ist dieses Skript geschrieben, um mehrere Regexes für eine einzelne URL und für eine Liste von URLs zu sammeln?

  • Für Straße:

    Code
    perl -nE 'if (/(Straße: [.\w-]+ \d+\w+)/) {say $1}'


    Das ist das erste mal, dass ich irgendwas mit Perl mache.

    Du kannst deinen Regex hier ausprobieren: https://regex101.com/


    So wie ich das verstanden habe, ist die Struktur folgendermaßen:

    Code
    if (/REGEX/) {say $1}


    Im Regex können auch runde Klammern vorkommen, um Gruppen zu erstellen.

    Bei E-Mail hast du das ja bereits. Die runden Klammern der Gruppen haben kein Schrägstrich davor.


    Zum Ausprobieren musst du den Teil nehmen, der als REGEX gekennzeichnet ist.

    say $1 gibt die Gruppe 1 aus.


    PS: Hausnummern können auch noch zusätzlich nach der Zahl einen Buchstaben enthalten. Das ist das letzte \w+ (was eins oder mehr Wiederholungen mit einbezieht.)

  • Die Frage unterscheidet sich jetzt ja nicht so wirklich von dieser hier: Brauche Bash Skript Unterstützung


    Mit dem Hinweis nicht Bash für so etwas zu verwenden, war gemeint komplett eine andere Programmiersprache zu verwenden, und nicht eine andere Sprache für jeden Ausdruck einzeln aufzurufen.


    Ob die anderen regulären Ausdrücke ”korrekt” sind kann man ohne die Anforderungen zu kennen nicht sagen. Letztlich wird es keine geben die alle Fälle abdeckt, andererseits sind die gezeigten teilweise sehr eingeschränkt. Umlaute oder andere Sonderzeichen in Namen, Leute die mehr als einen Vornamen haben, Titel vor Namen, Nachnamen die aus mehr als einem Wort bestehen, …


    Bei E-Mail ist die Frage welche denn eigentlich? Die aus dem Impressum selbst wird nicht gefunden, dafür wahrscheinlich die aus dem Footer der auf jeder Seite in dem Beispiel ist. Soll das so?


    Edit: Ergänzend zum Kommentar zur Hausnummern von DeaD_EyE: Nicht nur Buchstaben, es können auch mehrere Hausnummern, mit oder ohne Buchstaben sein. Durch Kommas getrennt, oder durch ein ASCII "-" oder durch einen ”echten” Trennstrich ("–"­ oder ”—”) oder gar durch ein Wort („2 bis 7“). Wie gesagt ”korrekt” ist da relativ.

    “If debugging is the process of removing software bugs, then programming must be the process of putting them in.” — Edsger Dijkstra