Tux: Regular Expressions Elemente aus Formeln

Hallo, ich habe einen Text, folgender Art:

2 Br4H + O2M + KSCN -> PbRe + Br5H

jetzt möchte ich alle Elemente, also:
Br, H, O, M, K, S, C, N, Pb, Re, Br, H
auslesen, nur krieg ich das mit Regular Expressions nich hin:
wenn ich einfach [A-Z] mache, dann geht mir bei Pb das b verlohren, also P. [A-Z][^a-z] lässt dann aber bei KSCN das SCN weg und ich bekomme nur das Element K.

Weiß jmd, wie ich mein Problem lösen kann?

  1. 2 Br4H + O2M + KSCN -> PbRe + Br5H

    jetzt möchte ich alle Elemente, also:
    Br, H, O, M, K, S, C, N, Pb, Re, Br, H

    Die Elemente bestehen entweder aus einem Großbuchstaben oder einem Groß- gefolgt von einem Kleinbuchstaben. Vorsichtshalber drehen wir die Bedingung nochmal und stellen die komplexere an den Anfang:

    [A-Z][a-z]|[A-Z]

    In Javascript liefert

    var s = "2 Br4H + O2M + KSCN -> PbRe + Br5H";
      alert(s.match(/([A-Z][a-z]|[A-Z])/g));

    das gewünschte Ergebnis.

    1. [A-Z][a-z]|[A-Z]

      So einfach? Danke!

      .
      Und, wie Elemente aufgebaut sind, hab ich schon gewusst ;-)

      1. Hi,

        [A-Z][a-z]|[A-Z]
        So einfach? Danke!

        noch einfacher:
        [A-Z][a-z]?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          [A-Z][a-z]|[A-Z]
          So einfach? Danke!

          noch einfacher:
          [A-Z][a-z]?

          Cheatah

          Nein, weil nicht alle Formeln einen Kleinbuchstaben haben!

          1. Hi,

            [A-Z][a-z]|[A-Z]
            So einfach? Danke!
            noch einfacher:
            [A-Z][a-z]?
            Nein, weil nicht alle Formeln einen Kleinbuchstaben haben!

            Ja und? Der Ausdruck von Cheatah erlaubt das doch.

            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.
          2. [A-Z][a-z]|[A-Z]
            So einfach? Danke!

            noch einfacher:
            [A-Z][a-z]?

            Nein, weil nicht alle Formeln einen Kleinbuchstaben haben!

            Doch, ist schon richtig. Das Fragezeichen hinter dem Kleinbuchstaben sagt "eines oder keines" des vorangehenden Objekts (Kleinbuchstabe). Længlichs Lösung ist wohl noch besser, mir war bis dahin aber noch kein Element untergekommen, das drei Buchstaben hat.

            1. Hello,

              Doch, ist schon richtig. Das Fragezeichen hinter dem Kleinbuchstaben sagt "eines oder keines" des vorangehenden Objekts (Kleinbuchstabe). Længlichs Lösung ist wohl noch besser, mir war bis dahin aber noch kein Element untergekommen, das drei Buchstaben hat.

              Guckst Du hier: http://de.wikipedia.org/wiki/Periodensystem

              Hab ich aber auch lange nicht mehr reingeschaut.

              Von Klasse 10 bis Klasse 13 galt immer: "Mit dem PS in der Hemdentasche, kommst Du Durch jede Klasse..." Und unser guter Chemielehrer bestand darauf, dass wir die Elemente und deren Ornungsnummern auswendig wussten. Oh Jeh. Ich hätte jetzt wohl nur noch Wasserstoff und Helium gewusst.

              Harzliche Grüße vom Berg
              http://bergpost.annerschbarrich.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              Nur selber lernen macht schlau
              Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

      2. Aloha!

        Und, wie Elemente aufgebaut sind, hab ich schon gewusst ;-)

        Mir (und vermutlich auch Eork ut Eork) ging es darum, nicht einfach nur das Ergebnis zu posten, sondern vor allem den Weg dahin nachvollziehbar zu machen. Und der erste und wichtigste Schritt beim Basteln eines regulären Ausdrucks ist es nun einmal, daß man sich ganz genau überlegt, wie die Zeichenfolgen aussehen, die gematcht werden sollen - auch dann, wenn man es im Prinzip schon weiß.
        Wenn man eine hinreichend genaue Vorstellung entwickelt hat, liegt die Formalisierung (und damit der Regex) meistens schon auf der Hand. Diese Formalisierung ist der zweite Schritt.
        Der dritte Schritt ist dann gegebenenfalls Optimierung - das ist das, was Cheatah gezeigt hat. ;-)

        Viele Grüße vom Længlich

  2. Ciao!

    Hallo, ich habe einen Text, folgender Art:

    2 Br4H + O2M + KSCN -> PbRe + Br5H

    jetzt möchte ich alle Elemente, also:
    Br, H, O, M, K, S, C, N, Pb, Re, Br, H

    M steht für ein beliebiges Metall? Als Elementsymbol gibt es das nämlich nicht.

    Weiß jmd, wie ich mein Problem lösen kann?

    Ein Elementsymbol beginnt immer mit einem Großbuchstaben: [A-Z]. Bei manchen (z.B. C) ist dann schon Schluß, bei anderen kommen noch ein (z.B. Mg) oder zwei (z.B Uuo) Kleinbuchstaben dazu. Zusammengefaßt: Ein Großbuchstabe und 0 bis 2 Kleinbuchstaben. Also [A-Z][a-z]{0,2}. Stelle dabei sicher, daß Dein Regex case-sensitiv ist (Modifier beachten)!

    Ich kann's hier jetzt nicht testen, aber ich hoffe, es hilft Dir trotzdem weiter.

    Viele Grüße vom Længlich