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.