Regulaere Ausdruecke mit Extra



  • Hallo

    kann mir mal jemand bitte helfen.
    Ich brauche eine Methode, um mittels regulären Ausdrücken nach
    Suchworten zu suchen, die Sonderzeichen enthalten.

    Bsp: in einem Text alle vorkommenden ``ZT+1?'' suchen.

    Das geht leider nicht so ohne Weiteres, da + und ? ja besondere
    Bedeutungen in reg.expr. haben, man bekäme bei einer Suche nach
    ZT+1? alle Strings mit ZT,ZTT,ZTTT,... und ZT,ZTT,ZTTT1
    ich will aber wörtlich nur den Treffer `ZT+1?' finden.

    Was ist, wenn ich das ganze auch noch mischen muß, also z.B.
    \s*ZT+1?''\\d+ wobei \\s* beliebigen whitespace matchen soll,ZT+1?'' wörtlich und
    \d+ mind. eine Ziffer matcht

    ??

    Kurz gesagt: Kann man Teile des Suchstrings vor der Interpretation der
    Sonderzeichen durch den regexp-Scanner schützen?



  • escapen?

    \s*``ZT\+1\?''\d+



  • Hallo

    Danke.
    escapen funktioniert und so werde ich es notfalls wohl auch machen.
    Aber lieber wäre mir eine Lösung, Teilstrings des Suchstrings selektiv vor
    der Interpretation zu bewahren, aber ich glaube, das geht wohl nicht.



  • simp127 schrieb:

    escapen funktioniert und so werde ich es notfalls wohl auch machen.
    Aber lieber wäre mir eine Lösung, Teilstrings des Suchstrings selektiv vor
    der Interpretation zu bewahren, aber ich glaube, das geht wohl nicht.

    es geht indem du sie escapest.

    deine regex library hat sicher eine "quote" oder "escape" funktion dafuer.



  • Hallo

    wie gesagt, Danke für die Antwort, mit dem Escapen geht es. Aber ich kann leider
    nur einzelne Zeichen escapen, sodaß ich, um +,*,? usw. zu entschärfen,
    auf jeden zu schützenden Teilstring des Suchstrings eine Funktion anwenden muß,
    die diese Zeichen escapt.

    Was ich am liebsten hätte, wäre eine Möglichkeit, z.B.
    \s*<<Z+T?>>\d+
    zu schreiben, was dann heißen soll, daß der Teilstring Z+T? nicht
    interpretiert werden soll, aber \s* und \d+ schon. Gibt es eine Library,
    die das kann ?

    Denn ich übergebe Suchstrings an die regexp-Funktionen, deren Inhalt
    erst zur Laufzeit bestimmt ist und derjenige Teil, der vor Interpretation
    geschützt werden muß, ändert sich von Mal zu Mal.



  • In PHP gibt es die Funktion preg_quote. Dürfte ja kein Problem sein diese Funktion vor dem Auswerten des Ausdrucks einmal über den String laufen zu lassen.

    Evtl. gibt es eine solche Funktion ja bei Dir auch?



  • Ja, genau so etwas wie "preg quote" suche ich! Leider kann ich kein PHP
    verwenden, aber vielleicht gibt's sowas in einer Library für C/C++ oder Python?



  • simpl27 schrieb:

    Ja, genau so etwas wie "preg quote" suche ich! Leider kann ich kein PHP
    verwenden, aber vielleicht gibt's sowas in einer Library für C/C++ oder Python?

    jede gute regex library bietet dir sowas. also welche library verwendest du? schau da mal in die doku.


Anmelden zum Antworten