Reguläre Ausdrücke

Multimedia pur!
Antworten
Benutzeravatar
zeebee
Adventure-Treff
Adventure-Treff
Beiträge: 4335
Registriert: 07.06.2002, 00:00
Wohnort: Scummland
Kontaktdaten:

Reguläre Ausdrücke

Beitrag von zeebee »

Kann mir einer vielleicht bei der Lösung eines Problems helfen? Ich benutze für eine Skripte reguläre Ausdrücke um sie auf Korrektheit zu prüfen (z.B. für eine richtige Formatierung eines Datums). Jetzt frage ich micht, ob ich komplette Wörter in einem beliebigen String verbieten kann.

Beispiel:
$string1 = "Du plöder Idiot!";
$string2 = "Du netter Mensch!!";

Der reguläre Ausdruck sollte false bei $string1 also false zurückgeben und bei $string2 true. Aber nur bei "plöder Idiot" alles andere soll erlaubt sein. Geht das mit regulären Ausdrücken? Mit PHP kann man es ja leicht abfangen, aber dafür müsste ich einiges umprogrammieren und diese Arbeit will ich mir eigentlich sparen... :idea:
Wer glaubt, ein Christ zu sein, weil er die Kirche besucht, irrt sich. Man wird ja auch kein Auto, wenn man in eine Garage geht.
Albert Schweitzer
Benutzeravatar
Certain
Rätselmeister
Rätselmeister
Beiträge: 1908
Registriert: 26.07.2002, 01:32

Beitrag von Certain »

Klar geht das, Dein regulärer Ausdruck besteht dann einfach aus "plöder Idiot". Für String 1 wäre das Ergebnis dann zwar "true" (und für String 2 "false"), aber das kannst Du dann ja einfach negieren. Wobei ich mir gerade nicht sicher bin, ob der Umlaut Probleme machen könnte.
Bye,
Certain

Benutzeravatar
zeebee
Adventure-Treff
Adventure-Treff
Beiträge: 4335
Registriert: 07.06.2002, 00:00
Wohnort: Scummland
Kontaktdaten:

Beitrag von zeebee »

Das mit dem negieren bekomme ich nicht hin. Da muss ja ein ^ davor, aber der ausdruck reagiert trotzdem so als wäre kein ^ davor....

Code: Alles auswählen

echo preg_match("/^hallo/", "hallo");
Wer glaubt, ein Christ zu sein, weil er die Kirche besucht, irrt sich. Man wird ja auch kein Auto, wenn man in eine Garage geht.
Albert Schweitzer
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Ohne den gerinsten Plan von PHP würd ich mal vermuten, dass das ^ an der falschen Stelle ist. Es muss nicht in den String, sondern unmittelbar vor die Bedingung.

Pseudocode:

Code: Alles auswählen

if (^Bedingung) ...
Use gopher repellent on funny little man
Benutzeravatar
zeebee
Adventure-Treff
Adventure-Treff
Beiträge: 4335
Registriert: 07.06.2002, 00:00
Wohnort: Scummland
Kontaktdaten:

Beitrag von zeebee »

khrismuc hat geschrieben:Ohne den gerinsten Plan von PHP würd ich mal vermuten, dass das ^ an der falschen Stelle ist. Es muss nicht in den String, sondern unmittelbar vor die Bedingung.

Pseudocode:

Code: Alles auswählen

if (^Bedingung) ...
nein, wenn schon wäre es ein

Code: Alles auswählen

if (!bedingung)
aber wie gesagt steht das skript fest und ich will das mithilfe des regulären ausdrucks (und dieser reguläre ausdruck ist die eigentliche bedingung) abfangen.
Wer glaubt, ein Christ zu sein, weil er die Kirche besucht, irrt sich. Man wird ja auch kein Auto, wenn man in eine Garage geht.
Albert Schweitzer
Benutzeravatar
DasJan
Adventure-Treff
Adventure-Treff
Beiträge: 14683
Registriert: 17.02.2002, 17:34
Wohnort: London
Kontaktdaten:

Beitrag von DasJan »

khrismuc hat geschrieben:Pseudocode:

Code: Alles auswählen

if (^Bedingung) ...[/quote]
In regulären Ausdrücken bedeutet ^  was anderes, als in C. Habe gerade beim Überfliegen der RegExp-Doku nichts gefunden. (Text) matcht offenbar Text, aber irgendwie scheinen reguläre Ausdrücke kein "nicht" zu kennen...

Das Jan
"If you are the smartest person in the room, you are in the wrong room."
Benutzeravatar
BLiM
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 44
Registriert: 24.06.2005, 21:39
Wohnort: HH

Beitrag von BLiM »

Zeebee, schau mal hier oder hier.
Benutzeravatar
Certain
Rätselmeister
Rätselmeister
Beiträge: 1908
Registriert: 26.07.2002, 01:32

Beitrag von Certain »

zeebee hat geschrieben:aber wie gesagt steht das skript fest und ich will das mithilfe des regulären ausdrucks (und dieser reguläre ausdruck ist die eigentliche bedingung) abfangen.
Das wird meines Wissens nicht klappen. Es ist (außer wahrscheinlich in Pearl) oftmals nicht möglich, einen regulären Ausdruck zu negieren, ohne auf die Negation der "Host-Sprache" zurückzugreifen.
Bye,
Certain

Benutzeravatar
zeebee
Adventure-Treff
Adventure-Treff
Beiträge: 4335
Registriert: 07.06.2002, 00:00
Wohnort: Scummland
Kontaktdaten:

Beitrag von zeebee »

Certain hat geschrieben:
zeebee hat geschrieben:aber wie gesagt steht das skript fest und ich will das mithilfe des regulären ausdrucks (und dieser reguläre ausdruck ist die eigentliche bedingung) abfangen.
Das wird meines Wissens nicht klappen. Es ist (außer wahrscheinlich in Pearl) oftmals nicht möglich, einen regulären Ausdruck zu negieren, ohne auf die Negation der "Host-Sprache" zurückzugreifen.
okay, dann komme ich wohl drum herum... vielen dank!
Wer glaubt, ein Christ zu sein, weil er die Kirche besucht, irrt sich. Man wird ja auch kein Auto, wenn man in eine Garage geht.
Albert Schweitzer
Antworten