Guten Abend liebe Community.
In der Uni behandeln wir gerade das Thema "Reguläre Ausdrücke" und als Aufgabe sollten wir diese dann auch mal anwenden.
Bisher hatte ich auch keine großartigen Probleme damit, doch bei einer Aufgabe bleib ich einfach hängen und auch meine Kommilitonen wissen nicht weiter.
Die Aufgabe ist folgende:
Es soll ein Ausdruck geschrieben werden, der alle Strings matcht, die ein 'q' oder 'Q' enthalten, dass nicht von einem 'u' gefolgt wird.
Als Testfälle werden dann folgende Worte aufgeführt:
Qantas, Qanquas, Iraq, Quatsch, Test
Qantas und Iraq sollten also matchen, während Qanquas, Quatsch und Test nicht gematcht werden dürfen.
Von der Logik her schien das ja recht einfach. Ich matche alle Wörter, die ein q oder Q enthalten, auf welches kein u folgt. Davor und danach können beliebig viele Zeichen folgen.
Mein erster Ansatz war damit: ".*[qQ][^u].*"
Dabei wird aber auch Qanquas gematcht und Iraq nicht.
Iraq wird wohl nicht gematcht, da ich ja ein von u verschiedenes Zeichen wollte... Es wird also ein Zeichen erwartet.
Das Problem mit Qanquas habe ich mir folgendermaßen erklärt:
Das erste Q wird erkannt. Auf dieses Q folgt kein u, weswegen das folgende qu nicht beachtet wird.
Um das qu in Qanquas aber auch zu erkennen habe ich es mit folgendem Ausdruck versucht.
"[.*[qQ][^u].*]+"
Damit sollte der bisherige Ausdruck ja öfters angewandt werden, soweit ich das mit dem + verstanden habe (wobei ich mir nicht sicher bin oder man die [ ] auch auf einen ganzen Ausdruck anwenden kann, wie ich es hier gemacht habe).
Mit diesem Ansatz habe ich aber das Problem, dass auch Test gematcht wird.
Wieso das hier passiert ist mir ein Rätsel.
Habt ihr andere Ideen oder Tips für mich?
Ich möchte natürlich nicht das jemand mir das einfach löst, schließlich bleibt es ja meine Aufgabe und durch eine Lösung wäre ich auch nicht schlauer.
Ein kleiner Stoß in die richtige Richtung könnte aber von Nutzen sein.
Mit freundlichen Grüßen,
DarXun
In der Uni behandeln wir gerade das Thema "Reguläre Ausdrücke" und als Aufgabe sollten wir diese dann auch mal anwenden.
Bisher hatte ich auch keine großartigen Probleme damit, doch bei einer Aufgabe bleib ich einfach hängen und auch meine Kommilitonen wissen nicht weiter.
Die Aufgabe ist folgende:
Es soll ein Ausdruck geschrieben werden, der alle Strings matcht, die ein 'q' oder 'Q' enthalten, dass nicht von einem 'u' gefolgt wird.
Als Testfälle werden dann folgende Worte aufgeführt:
Qantas, Qanquas, Iraq, Quatsch, Test
Qantas und Iraq sollten also matchen, während Qanquas, Quatsch und Test nicht gematcht werden dürfen.
Von der Logik her schien das ja recht einfach. Ich matche alle Wörter, die ein q oder Q enthalten, auf welches kein u folgt. Davor und danach können beliebig viele Zeichen folgen.
Mein erster Ansatz war damit: ".*[qQ][^u].*"
Dabei wird aber auch Qanquas gematcht und Iraq nicht.
Iraq wird wohl nicht gematcht, da ich ja ein von u verschiedenes Zeichen wollte... Es wird also ein Zeichen erwartet.
Das Problem mit Qanquas habe ich mir folgendermaßen erklärt:
Das erste Q wird erkannt. Auf dieses Q folgt kein u, weswegen das folgende qu nicht beachtet wird.
Um das qu in Qanquas aber auch zu erkennen habe ich es mit folgendem Ausdruck versucht.
"[.*[qQ][^u].*]+"
Damit sollte der bisherige Ausdruck ja öfters angewandt werden, soweit ich das mit dem + verstanden habe (wobei ich mir nicht sicher bin oder man die [ ] auch auf einen ganzen Ausdruck anwenden kann, wie ich es hier gemacht habe).
Mit diesem Ansatz habe ich aber das Problem, dass auch Test gematcht wird.
Wieso das hier passiert ist mir ein Rätsel.
Habt ihr andere Ideen oder Tips für mich?
Ich möchte natürlich nicht das jemand mir das einfach löst, schließlich bleibt es ja meine Aufgabe und durch eine Lösung wäre ich auch nicht schlauer.
Ein kleiner Stoß in die richtige Richtung könnte aber von Nutzen sein.
Mit freundlichen Grüßen,
DarXun