Hallo, wie muss ein regulärer Ausdruck aussehen, der "alles außer 'test'" auswählt? Ich dachte an sowas: [^test], aber der will es nicht tun? MfG Mr.Green
> Ich dachte an sowas: [^test], aber der will es nicht tun?
Das wäre genau ein Buchstabe, der alles außer t, e und s sein darf.
[^test] matcht exakt einen Buchstaben, der nicht t und nicht e und nicht s ist. Das ist nicht das was du moechtest. "alles ausser 'test'" ist allerdings nicht eindeutig genug, wuerde ich sagen. Wenn du so einen Eingabe-String hast: "abctestdef" auf was soll der regulaere Ausdruck dann passen? 1. Auf "abc"? 2. Auf "abctes"? 3. Auf "def"? 4. Auf "estdef"? 5. Auf gar nichts, weil in dem String "test" vorkommt? Ein match "abc" "def" ist nicht erreichbar mit regulaeren Ausdruecken, da das kein zusammenhaengender Substring von "abctestdef" ist.
[^test] matcht genau ein Zeichen und zwar eines, das kein t, e oder s ist. So wie die Frage jetzt formuliert ist kann man fast keine sinnvolle Antwort geben. Die Problematik bei text vorm test und text danach liegt darin, dass man mit einem Regex-Ausdruck nicht text vorm und text danach auswählen kann. Man kann mehrere Regex_Ausdrücke auswählen und dann kombinieren. Ausdruck 1: "text vorm " Ausdruck 2: "test" Ausdruck 3: " und text danach" In dem Fall würde man mit runden Klammern gruppieren und die so erzeugten Rückwärtsreferenzen neu arrangieren. Hier also \1 und \3 behalten und \2 wegwerfen. http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck EDIT: Chris war schneller ;-)
Mich interessiert der Text drumherum gar nicht. Der Java RegExp-Parser (->Matcher) prüft einfach, ob der übergebene String auf den Ausdruck passt. Und ich will ihn dazu bringen, TRUE zu sagen, wenn ein String den Text "test" nicht enthält :) Ich hoffe, das ist klarer geworden, was ich vorhab.
Ach so. Prüfe einfach, ob der Text "test" enthält und negiere das Ergebnis.
Ein Workaround bringt mir nichts, ich brauch den regulären Ausdruck :(
Das ist kein Workaround. Du sagst dich interessiert der String an sich nicht, nur ob der String "test" darin enthalten ist. Wenn er NICHT drin ist, willst du TRUE haben. Also fragst du den String ab, ob der String test enthalten ist (liefert TRUE oder FALSE) und bildest die logische Negation (macht aus dem FALSE das gewünschte TRUE). Du kannst dir auch von hinten durchs Knie ins Auge schiessen. Mir wird das zu blöd und ich klinke mich jetzt hier aus.
Stefan "stefb" B. wrote: > Du kannst dir auch von hinten durchs Knie ins Auge schiessen. Mir wird > das zu blöd und ich klinke mich jetzt hier aus. Ich weiß nicht, was daran zu blöd ist. Aber du scheinst es ja beurteilen zu können -.-
Blöd? Du weisst nicht was daran blöd ist? Blöd ist, Aufwand in etwas reinzustecken, bei dem nicht erklärt wurde, warum soviel Aufwand erforderlich ist und das angesichts der Tatsache, dass eine sehr einfache Lösung vorgeschlagen wurde, die jedoch kommentarlos abgelehnt wurde (EDIT: als Workaround disqualifiziert wurde). Blöd genug?
Bitte schoen: ^([^t]*(t([^e]|e([^s]|s[^t]))|.{0,3}$)?)*$ Das Muster zum Erstellen dieses Ausdrucks ist nicht schwierig zu erkennen. Allerdings wuerde ich eher diesen Ausdruck als "workaround" bezeichnen als das einfache Negieren einer Suche nach "test".
Huhu, ich habe hier ein Mailscript, in welchem ich im Adminbereich reguläre Ausdrücke für Mails eingeben kann, die er löschen soll. Ich lasse zum Beispiel Mails löschen, die ***SPAM*** im Betreff haben. Das funktioniert so: /^\*\*\*SPAM\*\*\*/ Nun möchte ich alle Mails löschen, die RE: als Betreff haben. Mails mit RE: Hallo im Betreff sollten aber dennoch ankommen. Wie kann ich mit einem regulären Ausdruck genau nur nach diesem RE: suchen ohne Beachtung von z.B. RE: Hallo? Vielen Dank. Liebe Grüße Danny
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.