Reguläre Ausdrücke Sammlung

  • Hi,
    ich hab eine Idee was haltet ihr von der Idee das wir immer wenn uns mal ein guter Regülarer Ausdruck in die Finger kommt das wir ihn hier sammeln?

    Ok ich fang dan mal an :rofl:

    HTML-Hexcode

    Spoiler anzeigen
    Code
    /^#([a-fA-F0-9]){3}(([a-fA-F0-9]){3})?$/

    MAC-Adresse

    Spoiler anzeigen
    Code
    /^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$/

    HTTP-Url

    Spoiler anzeigen
    Code
    /(https?):\/\/([0-9a-zA-Z][-.\w]*[0-9a-zA-Z]\.)+([a-A-Z]{2,9})(:\d{1,4})?([-\w\/#~:.?+=&%@]*~)/

    IP-Adresse

    Spoiler anzeigen
    Code
    \b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b

    Einmal editiert, zuletzt von Tom99 (19. September 2008 um 13:52)

  • finde ich eine Super Idee, denn ich beschäftige mich auch gerade damit. Aber ich kapier das einfach nicht ;(

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • URL (http, https, ftp):

    Spoiler anzeigen
    Code
    ^^((ht|f)tp(s?)\:\/\/|~/|/)?([\w]+:\w+@)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?((/?\w+/)+|/?)(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?


    IPV6:

    Spoiler anzeigen
    Code
    ^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\z


    IPV6 HexCompressed:

    Spoiler anzeigen
    Code
    ^((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)::((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)$


    IPV6 6Hex4Dec:

    Spoiler anzeigen
    Code
    ^((?:[0-9A-Fa-f]{1,4}:){6,6})(25[0-5]||2[0-4]\d||[0-1]?\d?\d)(\.(25[0-5]||2[0-4]\d||[0-1]?\d?\d)){3}$


    IPV6 Hex4DecCompressed:

    Spoiler anzeigen
    Code
    ^((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?) ::((?:[0-9A-Fa-f]{1,4}:)*)(25[0-5]||2[0-4]\d||[0-1]?\d?\d)(\.(25[0-5]||2[0-4]\d||[0-1]?\d?\d)){3}$


    Deutsche PLZ:

    Spoiler anzeigen
    Code
    \b((?:0[1-46-9]\d{3})||(?:[1-357-9]\d{4})||(?:[4][0-24-9]\d{3})||(?:[6][013-9]\d{3}))\b


    eMail (einfach):

    Spoiler anzeigen
    Code
    ^([\w\-\.]+)@((\[([0-9]{1,3}\.){3}[0-9]{1,3}\])||(([\w\-]+\.)+)([a-zA-Z]{2,4}))$


    eMail RFC 3696:

    Spoiler anzeigen
    Code
    ^[a-z0-9!\$'*+\-_]+(\.[a-z0-9!\$'*+\-_]+)*@([a-z0-9]+(-+[a-z0-9]+)*\.)+([a-z]{2}||aero||arpa||biz||cat||com||coop||edu||gov||info||int||jobs||mil||mobi||museum||name||net||org||pro||travel)$


    String in Anführungszeichen:

    Spoiler anzeigen
    Code
    ^("||')((?!\1).||\1{2})*\1$


    (Werbung: ist alles in der XInsert Bibliothek "RegEx" in jEdit4AutoIt auch drin :D

  • wie wäre es mit jeweils ein AnwenderBeispiel ?

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Spalten aus CSV-Datei auslesen

    Spoiler anzeigen


    Primzahlen per RegEx

    Spoiler anzeigen
    Code
    ;primzahlen ab 3 mittels regex
    
    
    $string = "1"
    For $i = 3 To 3000 Step 2
        $string &= "11"
        If Not StringRegExp($string, "^1?$|^(11+?)\1+$", 0) Then ;regex matched KEINE Primzahlen
            ConsoleWrite('$i = ' & $i & @CRLF)
        EndIf
    Next
  • Korrigierte Fassung der IP-Adresse (die oben erkennt auch falsche IP-Adressen...):

    Der String oben erkennt auch "100.0.123.023" als gültige Adresse. Dies ist allerdings keine gültige IP-Adresse. Außerdem hat man die Lösung per Google eh nicht gefunden, wollte sie gerade beitragen :D


    Spoiler anzeigen
    AutoIt
    \b((?:[0-9]|[|1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(?:[0-9]|[|1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(?:[0-9]|[|1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.(?:[0-9]|[|1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\b

    Und für die, die die einzelnen Blocks wollen:

    Spoiler anzeigen
    AutoIt
    \b([0-9]|[|1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[|1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[|1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[|1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b

    Oder beides:

    Spoiler anzeigen
    AutoIt
    \b(([0-9]|[|1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[|1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[|1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[|1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))\b

    Es gibt Tage, da trete ich nicht ins Fettnäpfchen. Ich falle in die Friteuse.

  • @Einexage
    Dein Pattern hat noch nen kleinen Fehler drin und zwar an der Stelle [|1-9].
    Führt dazu dass z.B. auch 123.|1.3.2 gematcht wird.

    Etwas zusammengefasst könnte man es auch z.B. auch so schreiben:

    Perl
    \b(?>(?>25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?(?=\.?\d)\.)){4}\b
  • @Einexage
    Dein Pattern hat noch nen kleinen Fehler drin und zwar an der Stelle [|1-9].
    Führt dazu dass z.B. auch 123.|1.3.2 gematcht wird.

    Etwas zusammengefasst könnte man es auch z.B. auch so schreiben:

    Perl
    \b(?>(?>25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?(?=\.?\d)\.)){4}\b

    Danke, Aspirin, der Fehler war mir gar nicht aufgefallen, da ich es nur eben schnell nebenher gebastelt habe... :)

    Es gibt Tage, da trete ich nicht ins Fettnäpfchen. Ich falle in die Friteuse.

  • Hab gerade den Thread gesehen.
    Hier ein kurzer vollständiger IP Pattern

    AutoIt
    Local $s_pattern_ip_filter = "(((25[0-5]|2[0-4]\d|[01]?\d?\d)(\.|\b)){4})"

    Leider ist der Pattern aber ziemlich nutzlos, da er auch ungültige IP-Adressen zulässt im Gegensatz zu dem oben - außer dem gekürzten oben und dem im Eigangsposting. Das Kürzen bei IP-Adressen führt bloß dazu das der RegEx wertlos wird. Dann kann man auch gleich (\d+\.\d+\.\d+\.\d+) verwenden. Etwa genauso sinnvoll, da es genauso wenig absichert, dass die Eingabe auch wirklich eine gültige IP ist.

    0.0.0.0 ist keine gültige IP. Ebenso 255.255.255.255.

    Es gibt Tage, da trete ich nicht ins Fettnäpfchen. Ich falle in die Friteuse.

  • Nebenbei: Telefonnummerpatten

    Und wie schrieb BugFix? Dieser Thread ist völlig zu Unrecht in der Versenkung verschwunden. Ich werde ihn mal wieder nach oben befördern. ;)  


    finde ich eine Super Idee, denn ich beschäftige mich auch gerade damit. Aber ich kapier das einfach nicht ;(

    Willkommen im Club ! ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Alina (26. Januar 2016 um 19:48)

  • Telefonnummern:

  • JA für regex sollten wir uns wirklich mal was einfallen lassen - die sind einerseits super praktisch - können einen aber auch in den Wahnsinn treiben :). Irgendwie sollten wir unser Wissen hier besser bündeln...

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • HTTP-Url

    Spoiler anzeigen
    Code
    /(https?):\/\/([0-9a-zA-Z][-.\w]*[0-9a-zA-Z]\.)+([a-A-Z]{2,9})(:\d{1,4})?([-\w\/#~:.?+=&%@]*~)/

    Wofür sind die '/' am Anfang und am Ende? Zudem funktioniert das bei mir nicht, obwohl ich die '/' weggelassen habe und das fehlende 'z' ergänzt habe.

  • Wofür die '/' am Anfang und Ende sind, kann ich dir nicht sagen.

    Als Alternative kannst du dieses Pattern verwenden:

    AutoIt
    Global $sRxPattern = "^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$"
    Global $sURL = 'https://autoit.de/index.php?thread/7892-regul%C3%A4re-ausdr%C3%BCcke-sammlung/&postID=691034#post691034'
    
    ConsoleWrite(StringRegExp($sURL, $sRxPattern) & @CRLF)

    oder du machst es so...

    AutoIt
    Global $sURL = 'https://autoit.de/index.php?thread/7892-regul%C3%A4re-ausdr%C3%BCcke-sammlung/&postID=691034#post691034'
    
    InetGetSize($sURL)
    If @error Then
        ConsoleWrite("Invalid URL" & @CRLF)
    Else
        ConsoleWrite("Valid URL" & @CRLF)
    EndIf
  • Und wenn du offline bist?

    oder so... 8o