Suche mit LIKE

  • Wer mit SQL arbeitet kennt LIKE, um maskiert zu suchen.
    In AutoIt können wir das mit RegEx erledigen. Da damit doch so mancher seine Probleme hat, habe ich die Syntax von LIKE verwendet ('_' =Platzhalter für ein beliebiges Zeichen an dieser Stelle; % =Platzhalter für eine beliebige Zahl von Zeichen, auch 0) und setze das intern in eine Regex-Prüfung um.
    Im Unterschied zu LIKE, das immer case-sensitiv ist, kann hier die Sensitivität gewählt werden. Standard ist False.


    Edit3:
    Erweiterung:
    Der zu prüfende String kann jetzt auch Zeilenumbrüche (@CR oder @CRLF) enthalten.


    Edit2:
    War noch ein Fehler drin beim An-/Abschalten der Metacharacter Erkennung.


    Edit:
    Habe progandys Hinweis jetzt eingearbeitet.



  • Weil diese Zeichen keine besondere Bedeutung haben. Ausschließlich die 11 aufgeführten Zeichen haben eine Doppelfunktion und müssen deshalb maskiert werden.


    Vielleicht hab ich ja was übersehen, aber {...} wird 1. zur Quantifizierung, und 2. zum "trennen" von Backreferenze und richtigen Zahlen verwendet.


    Ansonsten kannst du mir aber mal sagen, warum das hier nicht funktioniert:
    MsgBox(0,"",_Search_LIKE("test{2}","t__t{2}"))


    Bzw. warum das hier funktinoiert (was es ja eigenltich nicht sollte ;) )
    MsgBox(0,"",_Search_LIKE("tt","t{2}"))



    Außerdem: Wenn du schon [ maskierst, solltest du das auch mit ] machen.
    Sonst versuchst du ja im RegExp eine Zeichenklasse zu schließen, die nie geöffnet wurde.
    Ich bin mir fast sicher, dass das auch zu Laufzeitfehlern im RegExp führen wird.

  • Betreff der geschweiften Klammern hast du recht, die hab ich glatt vergessen. 8|
    Aber sowohl bei geschweifter als auch bei eckiger Klammer muß nur die öffnende Klammer maskiert werden. Die schließenden Klammern alleinstehend werden von der Regex-Engine als normale Zeichen behandelt. Probier es aus - gibt keine Fehler.


    Neue Version in Post 1.
    Habe den Tipp von progandy umgesetzt.