Hilfe bei regulärem Ausdruck

  • Hallo,

    hoffe ihr könnt mir helfen: Ich will eine URL mit StringRegExp überprüfen lassen. Dabei hat die URL immer das gleiche Format:

    protokoll://download.example.org/ordner/datei_name.ext

    Protokoll habe ich selber registriert. Es sollen hinter dem Protokollnamen entweder \\ oder // angenommen werden. Das Protokoll, der Seitenname (download.example.org), der Ordnername und die Dateierweiterung sind immer gleich. Es kann also nur Unterschiede bei \\ bzw. // sowie den einzelnen (Back-)Slashes und dem Dateinamen geben.

    Als Dateiname sollen alle großen und kleinen Buchstaben (auch Umlaute und ß) sowie Unterstriche, Striche und Punkte angenommen. Ich habe mir die Hilfe dazu angesehen sowie das Tutorial von BugFix, aber ich kapier es einfach nicht :( Kann mir jemand helfen?

    Einmal editiert, zuletzt von Arkaneus (15. Januar 2010 um 20:09)

  • Danke, geht super :) Hatte es grade irgendwie hinbekommen, aber das hat nicht überall funktioniert. Das hier ist genau richtig :thumbup:

  • Das wäre ein verbesserter RegExp, der auf Wunsch sogar den Dateinamen zurückgib.: Solltest du auch ausländische Sonderzeichen wie é oder ê erlauben wollen, solltest du überlegen, ob du nicht zeichen definieren willst, die nicht im Dateinamen vorkommen dürfen.

    [autoit]

    $str = 'protokoll://download.example.org/ordner/blä-Blü_Bö.ß.ext'

    [/autoit][autoit][/autoit][autoit]

    $result = StringRegExp($str, "^(?i)\h*protokoll:(?:\\\\|//)download\.example.org[\\/]ordner[\\/]([-a-z_üäöß\.]+)\.ext\h*$", 1)

    [/autoit][autoit][/autoit][autoit]

    If Not @error Then
    MsgBox(0, '', $result[0])
    Else
    MsgBox(0, '', "Fehler")
    EndIf

    [/autoit]
  • O gott ist das kompliziert :D

    Was bewirken denn das ^(?i)\h* am Anfang, das \h*$ am Ende und das (?: nach dem protokoll: ? Ich versteh die Erklärungen in der Hilfe nicht wirklich... Sonderzeichen werden vermutlich keine dazukommen, und wenn doch nur sehr wenige.

  • O gott ist das kompliziert :D

    Was bewirken denn das ^(?i)\h* am Anfang, das \h*$ am Ende und das (?: nach dem protokoll: ? Ich versteh die Erklärungen in der Hilfe nicht wirklich... Sonderzeichen werden vermutlich keine dazukommen, und wenn doch nur sehr wenige.


    Ich schlüssele es dir mal auf ;)

  • Okay, danke :) Dann wär der Punkt ja im Fall das das was sehr wichtiges wäre lebensbedrohlich wenn jemand dann die Domain "downloadxexample.org" oder so hätte... Ja, ich glaub so langsam beginne ich das alles zu verstehen :D

    Ich liebe das Forum... Ich kenn wirklich viele Foren wo einfach nur ne einigermaßen hinkommende Lösung reingeschmissen wird und das wars dann. Hier ist das viiiieeeel besser, mit solchen Usern wie euch. :)