Severin Kacianka: Regulärer Ausdruck

Hallo,

ich versucht gerade mich in regulären Ausdrücker weiterbilden, und will dieses Wissen in einer Uniaufgabe einbringen (also ja: es ist eine Hausaufgabe, auch wenn wir reguläre Ausdrücke nicht verwenden müssen. ;)).
Folgenden String versuche ich zu "treffen":
<task> 1 3 15 Tu etwas
<task> ist ein Schlüsselwort
1 und 3 sind einstellige Zahlen zwischen 1 und 3
15 eine beliegige mehrstellige Zahl
und "Zu etwas" ein beliebiger String.

In natürlicher Sprache ist das Problem recht einfach zu formulieren:
Ich suche einen String, der mit "<task>" beginnt, von zwei Zahlen zwischen 1 und 3 gefolgt wird. Dannach folgt eine beliebige Zahl und dann Noch eine Zeichenkette.

Hier meine Versuche das dem Computer beizubringen:

Pattern p = Pattern.compile("(<task>) ( ) ([1-3]) ( ) ([1-3]) ( ) ([1-9]{1,}) ( ) (\S{0,})");
Pattern p = Pattern.compile("^<task>\s[1-3]{1}\s[1-3]{1}\s[0-9]\S");

Alle erflogslos, obwohl Sie mir eigendlich richtig erscheinen (Überraschung?!). Kann mich irgendwer in die richtige Richtung stoßen (Notfalls auch mit der RTFM-Keule)?

Danke für eure Zeit und liebe Grüße,
Severin

--
They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.
-- Benjamin Franklin
  1. Hallo,

    Ich habe eine Lösung gefunden:
    Pattern p = Pattern.compile("<task>\s[1-3]\s[1-3]\s[0-9]{0,}\s[\S|\s]{0,}");

    Danke Forum, dass du mir einen Ort bietest meine Gedanken zu ordnen :-)

    Gruß,
    Severin

    --
    They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.
    -- Benjamin Franklin
    1. gudn tach!

      Ich habe eine Lösung gefunden:

      schoen. dazu ein paar anmerkungen.

      Pattern p = Pattern.compile("<task>\s[1-3]\s[1-3]\s[0-9]{0,}\s[\S|\s]{0,}");

      \s ist whitespace also nicht nur leerzeichen, sondern z.b. auch zeilenumbrueche. leerzeichen werden einfach durch leerzeichen symbolisiert

      fuer {0,} gibt es die abkuerzung *

      fuer [0-9] gibt es die abkuerzung \d

      mit [\S|\s] meinst du vermutlich ein zeichen, dass whitespace ist oder kein whitespace ist. das pipe wird hier jedoch, weil innerhalb einer zeichenklassendefinition literal, also nicht als OR, sondern als | gelesen. ein beliebiges zeichen wird einfach mit einem punkt gematcht.

      ich vermute deswegen, dass du auch einfach

      Pattern p = Pattern.compile("<task> [1-3] [1-3] \\d* .*")

      benutzen koenntest.

      prost
      seth

      1. gudn tach!

        \s ist whitespace also nicht nur leerzeichen, sondern z.b. auch zeilenumbrueche. leerzeichen werden einfach durch leerzeichen symbolisiert

        fuer {0,} gibt es die abkuerzung *

        fuer [0-9] gibt es die abkuerzung \d

        und fuer satz-enden gibt es punkte.
                                           ^ scnr

        mit [\S|\s] meinst du vermutlich ein zeichen, dass whitespace ist [...]

        ^ ahhhh! und das mir!

        prost
        seth

        1. Tach...

          mit [\S|\s] meinst du vermutlich ein zeichen, dass whitespace ist [...]
                                                               ^ ahhhh! und das mir!
          prost
          seth

          Ich weis: "Von Gott über Kane zu Seth..." SCNR

          MfG
          ich

          1. gudn tach!

            Ich weis: "Von Gott über Kane zu Seth..." SCNR

            das s zu viel fehlte deinem wissen.

            via google habe ich herausgefunden, dass das wohl ein zitat aus command & conquer ist. dune2 fand ich ja noch toll aber c&c war mir zu modern. mehrere einheiten auf einmal markieren? pah! etwas fuer weicheier... ;-)

            prost
            seth

            1. Tach...

              das s zu viel fehlte deinem wissen.

              Warum? Wegen "dass" habe ich überhaupt geschrieben - auch ein "Gott" kann sich irren. :D

              1. gudn tach!

                das s zu viel fehlte deinem wissen.

                Warum?

                ich zitiere:

                Ich weis: "Von Gott über Kane zu Seth..." SCNR
                       ^

                prost
                seth

                1. Tach.

                  Also es gibt entweder weiß oder weis - aber nicht weiss, auch wenn viele das so schreiben.

                  MfG
                  ich

                  1. gudn tach!

                    Also es gibt entweder weiß oder weis

                    richtig. _entweder_ ... _oder_ ...
                    du koenntest sogar noch praezisieren:
                    "weiss" (mit eszett) gibt es und "weis" gibt es nicht. ;-)

                    aber nicht weiss, auch wenn viele das so schreiben.

                    naja, abgesehen davon, dass z.b. die schweizer es offiziell so schreiben duerfen und der rest es zumindest in majuskel-schrift mit zwei s schreiben muss, ging es mir vor allem um den spass, weil ja ss und eszett so ungefaehr das gleiche sind.

                    prost
                    seth

                    1. Tach.

                      OK, ist jetzt zwar doof, aber:
                      MS Word (2003) kennt "weis", "Weiß", "weiß", "weises" und "weise". Aber "weiss" oder "Weiss" wird rot unterstrichen... das "technische Umschreiben" in "ss" - weil es 'ß' im englischen Zeichensatz nicht gibt - ist also trotzdem falsch, auch wenn es in einigen Anwendungen keine Alternative gibt. In HTML dagegen gibt es "&szlig;" um 'ß' darstellen zu können.

                      Das "weis" (ob Groß oder klein) mit einem 's' gibt es aber dennoch - und im Gegensatz zu "Weiß" ist damit keine Farbe gemeint.

                      1. Hallo ich.

                        OK, ist jetzt zwar doof, aber:
                        MS Word (2003) kennt "weis", "Weiß", "weiß", "weises" und "weise". Aber "weiss" oder "Weiss" wird rot unterstrichen...

                        Ja, das ist doof. In solchen Belangen sollte man sich nicht auf die Rechtschreibkontrolle einer Textverarbeitung verlassen, sondern lieber in der Quelle (hier Duden bzw. Die deutsche Rechtschreibung) nachschlagen

                        das "technische Umschreiben" in "ss" - weil es 'ß' im englischen Zeichensatz nicht gibt - ist also trotzdem falsch, auch wenn es in einigen Anwendungen keine Alternative gibt.

                        Sag das mal den Schweizern.

                        Das "weis" (ob Groß oder klein) mit einem 's' gibt es aber dennoch - und im Gegensatz zu "Weiß" ist damit keine Farbe gemeint.

                        Und was soll „weis“ sein?

                        Einen schönen Freitag noch.

                        Gruß, Ashura

                        --
                        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                        „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                        [HTML Design Constraints: Logical Markup]
                        1. gudn tach!

                          OK, ist jetzt zwar doof, aber:
                          MS Word (2003) [...]

                          ist doof.

                          Ja, das ist doof.

                          eben. ;-)

                          Das "weis" (ob Groß oder klein) mit einem 's' gibt es aber dennoch - und im Gegensatz zu "Weiß" ist damit keine Farbe gemeint.

                          Und was soll „weis“ sein?

                          ei, de heinz, kennst'n nedd? ;-)

                          afaik wird "weis'" nicht selten in gedichten verwendet, wenn der dichter sowohl zu doof zum prosa schreiben als auch zu doof zum reimen ist.

                          prost
                          seth

                          1. Hallo seth.

                            Und was soll „weis“ sein?

                            ei, de heinz, kennst'n nedd? ;-)

                            Nein, bisher nicht. Und da es hier um Sport geht, habe ich auch nichts verpasst.

                            afaik wird "weis'" nicht selten in gedichten verwendet, wenn der dichter sowohl zu doof zum prosa schreiben als auch zu doof zum reimen ist.

                            Ja, diese Weis’ ist mir geläufig.
                            (Ich verkneife mir, einen Reim zu bilden.)

                            Einen schönen Freitag noch.

                            Gruß, Ashura

                            --
                            sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                            „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                            [HTML Design Constraints: Logical Markup]
                  2. Hallo ich.

                    Also es gibt entweder weiß oder weis

                    Nein, letzteres existiert nicht.

                    • aber nicht weiss, auch wenn viele das so schreiben.

                    Dies ist einfach nur die non-„ß“-Variante von „weiß“, welche z. B. in der Schweiz und in Versalschrift gebraucht wird.

                    Einen schönen Donnerstag noch.

                    Gruß, Ashura

                    --
                    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                    [HTML Design Constraints: Logical Markup]