Announcement

Collapse
No announcement yet.

Problem mit regulärem Ausdruck

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit regulärem Ausdruck

    Hallo

    ich möchte mit einem RegExp alle Zeichenfolgen aus einem String filtern, die mit leerzeichen beginnen, dann zwei Beliebige Zeichen haben und mit einem leerzechen enden.

    habe mir follgendes überlegt:

    System.out.println(" 1 234 fere fe zzz".replaceAll("[\\s\\.{1,2}\\s]"," "));

    Das funktioniert aber garnicht ;(

    Ist hier ein RegExp Profi, der mir helfen kann.

  • #2
    http://www.fileformat.info/tool/regex.htm schon probiert ?
    MfG
    Cheat-Sheets for Developers / Programming Quotes

    Comment


    • #3
      Originally posted by Markus Lahr View Post
      Ja habe ich schon 2 Stunden rumgeklickt. Brings irgendwie nicht hin.

      Habe jetz mal

      [\\s][A-Za-z0-9ÄäÜüÖöß.-/\\\\]{0,2}[\\s]

      Probiert aber das funktioniert auch nicht 100%ig. bei " 1 234 23 44 fere .. . fe zzz" wird 44 und . nicht rausgefiltert.

      Comment


      • #4
        ( .{2} )

        sollte gehen
        Christian

        Comment


        • #5
          Originally posted by Christian Marquardt View Post
          ( .{2} )

          sollte gehen
          Geht auch nicht:

          in: " 1 234 23 44 fere .. . fe zzz"
          out: " 1 234 44 fere . zzz"

          Comment


          • #6
            Ich weiss nicht was out ist, aber in den Gruppen des Ausdruckes findest du die Treffer nämlich

            23
            ..
            fe

            Für ein Replace ist der Ausdruck

            .{2}

            (vorne und hinten ein Leerzeichen)

            Damit wird aus

            1 234 23 44 fere .. . fe zzz


            1 23444 fere.zzz
            Zuletzt editiert von Christian Marquardt; 21.10.2010, 13:32.
            Christian

            Comment


            • #7
              Originally posted by Christian Marquardt View Post
              Ich weiss nicht was out ist, aber in den Gruppen des Ausdruckes findest du die Treffer nämlich

              23
              ..
              fe

              Für ein Replace ist der Ausdruck

              .{2}

              (vorne und hinten ein Leerzeichen)

              Damit wird aus

              1 234 23 44 fere .. . fe zzz


              1 23444 fere.zzz
              Sorry habe mich oben vertippt es sollte nicht zwei Zeichen heissen sondern eins oder zwei Zeichen also kleiner drei

              die 1 und der Punkt müssen auch noch weg

              Also in: " 1 234 23 44 fere .. . fe zzz"
              out: "234 fere zzz"

              Comment


              • #8
                Meine 2 Cents:

                " 1 234 23 44 fere .. . fe zzz".replaceAll("( (.){1,2} )", " ")

                Comment


                • #9
                  Originally posted by aleucht View Post
                  Meine 2 Cents:

                  " 1 234 23 44 fere .. . fe zzz".replaceAll("( (.){1,2} )", " ")
                  nee auch nicht

                  out: 234 44 fere . zzz

                  44 und . müssen noch weg

                  Comment


                  • #10
                    Das ist dann schwer möglich.
                    Wenn als Anker für den Ausdruck vorne und hinten ein Leerzeichen benötigt wird, ist das bei 44 und dem . schon vorhaer als Ende verbraucht. Da musst du einen Ausdruck mit einem LookAhead konsturieren. Des weiteren hat zzz am Ende auch kein Leerzeichen. Hier ist das Zeilenende zu berücksichtigen
                    Ein anderer Weg wäre, alle Teile zu suchen, die kleiner als 3 sind. Diese dann manuell entfernen.Also einen Ausdruck der eine entsprechende Gruppe zurückliefert und diese durchgehen und aus dem String entfernen.
                    Christian

                    Comment


                    • #11
                      Originally posted by Christian Marquardt View Post
                      Das ist dann schwer möglich.
                      Wenn als Anker für den Ausdruck vorne und hinten ein Leerzeichen benötigt wird, ist das bei 44 und dem . schon vorhaer als Ende verbraucht. Da musst du einen Ausdruck mit einem LookAhead konsturieren. Des weiteren hat zzz am Ende auch kein Leerzeichen. Hier ist das Zeilenende zu berücksichtigen
                      Ein anderer Weg wäre, alle Teile zu suchen, die kleiner als 3 sind. Diese dann manuell entfernen.Also einen Ausdruck der eine entsprechende Gruppe zurückliefert und diese durchgehen und aus dem String entfernen.
                      ich habe ein Array mit split(" ") gemacht und werte jedes einzelne element aus dem Array aus so funktioniert es. Allerdings sollten doch auch Mustererkennung mit Folge mit RegExp möglich sein

                      Comment


                      • #12
                        Sicher sind sie das...
                        Christian

                        Comment

                        Working...
                        X