Jense: Reguläre Ausdrücke...

Einen wunderschönen wünsche ich,

wie muss der reguläre Ausdruck aussehen um die letzte Position aus einer gegebenen Gruppe von Zeichen in einem String zu finden? Ich steig da nicht durch, vorallem mit der Anwendung von pos !

Beispiel:

geg. Gruppe von Zeichen:
["",,,;,x] soll heissen Leerzeichen, Komma, Semikolon und x

String:
"ich bin, einfach zu nix fähig; darum frage ich hier x-Mal"

Gewünschtes Ergebnis sollte die letzte Position von x sein, also ähhh zählt doch selber (hier 5. von hinten ;) )

Ich hoffe mein Anliegen ist klar geworden und danke jetzt schon den '(ir)regulären Experten' hier.

Jense

  1. Einen wunderschönen wünsche ich,

    Tachen,

    String:
    "ich bin, einfach zu nix fähig; darum frage ich hier x-Mal"

    Gewünschtes Ergebnis sollte die letzte Position von x sein, also ähhh zählt doch selber (hier 5. von hinten ;) )

    Tuts denn lastIndexOf nicht für dich?! ;P

    1. Tuts denn lastIndexOf nicht für dich?! ;P

      klar kann (muss?; habe gerade gesehen das pos ja pearl code ist) man sich da was zusammenbasteln, aber ich hoffe es gibt eine elegantere, sprich kürzere Variante. Entscheidend ist ja, dass ich nach dem letzten Zeichen aus einer beliebigen Gruppe von Zeichen frage und ich wollte Schleifen o.ä. vermeiden wenn geht.

      Gruss Jense

      1. Hello out there!

        Entscheidend ist ja, dass ich nach dem letzten Zeichen aus einer beliebigen Gruppe von Zeichen frage und ich wollte Schleifen o.ä. vermeiden wenn geht.

        Wozu Schleifen?

        [ref:self812;javascript/objekte/math.htm#max@title=Math.max](foo.lastIndexOf(' '), foo.lastIndexOf(','), foo.lastIndexOf(';'), foo.lastIndexOf('x'))

        Ob das performanter ist als ein regulärer Ausdruck, wäre zu testen.

        See ya up the road,
        Gunnar

        --
        „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)
        1. Hello out there!

          [ref:self812;javascript/objekte/math.htm#max@title=Math.max]

          Die Referenz auf SELFHTML ist hier etwas unglücklich, da SELFHTML an der Stelle fehlerhaft ist. [TICKET346]

          See ya up the road,
          Gunnar

          --
          „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)
          1. Hello out there!
            See ya up the road,

            Hi Gunnar,
            mir ging gerade ein light on
            foo.lastIndexOf  :D

            Not bad - aber wo Du recht hast hast Du recht!

            Gruss Jense

        2. [ref:self812;javascript/objekte/math.htm#max@title=Math.max](foo.lastIndexOf(' '), foo.lastIndexOf(','), foo.lastIndexOf(';'), foo.lastIndexOf('x'))

          Hi Gunnar,

          das sieht doch gut aus! Ist ja schon fast ein kleines Weihnachtsgeschenk - fehlt nur noch ne Schleife drumrum, vielleicht gibts die bei Pearl...

          Danke Dir!

          Gruss Jense

      2. klar kann (muss?; habe gerade gesehen das pos ja pearl code ist)

        Was ist denn Pearl? Meinst du den Billigcomputershop?

        Struppi.

        1. Hallo Struppi!

          klar kann (muss?; habe gerade gesehen das pos ja pearl code ist)
          Was ist denn Pearl? Meinst du den Billigcomputershop?

          Jense meint vermutlich Perl, aber es gibt auch PEARL ;)

          Viele Grüße aus Frankfurt/Main,
          Patrick

          --

          _ - jenseits vom delirium - _
          [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
          Nichts ist unmöglich? Doch!
          Heute schon gegökt?
        2. Was ist denn Pearl? Meinst du den Billigcomputershop?

          Klar was sonst!  :))

          Kann nix, weiss nix und das bringe ich noch alles schön durcheinander - darum bin ich hier und Ihr dort.

          Gruss Jense

  2. Hi,

    geg. Gruppe von Zeichen:
    ["",,,;,x] soll heissen Leerzeichen, Komma, Semikolon und x

    Das bedeutet eher:
    Anführungszeichen, Komma, Semikolon, x
    (wobei das mehrfache Angeben von , und " zwar erlaubt, aber eher sinnlos ist).

    Du willst eher [ ,;x]

    Wenn Du das letzte haben willst, darf danach bis zum Stringende also keines dieser Zeichen mehr vorkommen.
    Also
    ([ ,;x])[^ ,;x]*$

    $ ist das Stringende, ^ kehrt die Zeichenklasse um (also alles außer den nach ^ gegebenen Zeichen), * beliebig viele davon.

    Ob man mit Javascript auch die Trefferposition direkt bekommen kann, ist mir nicht bekannt - schlimmstenfalls aus der Stringlänge und der Trefferlänge berechnen.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo Andreas,

      ([ ,;x])[^ ,;x]*$

      interessanter Ansatz, da will ich doch auch einen vorstellen:

      .*([ ,;x])

      ».*« frisst sich bis zum Ende durch und dann setzt Backtracking ein. Durch diesen "Trick" wird erreicht, dass der Bezugstext in bezug auf das eigentliche Muster »[ ,;x]« quasi von rechts nach links abgearbeitet wird.

      Gruß Uwe