Regulärer Ausdruck gesucht

Von: , Frage gestellt am Di, 23. Aug 2005

Hallo,

ich programmiere in ASP.NET und bin in der unangenehmen Lage, ein paar Informationen aus einem langen String extrahieren zu müssen. Dazu möchte ich einen Regulären Ausdruck verwenden, den ich jedoch nicht erstellen kann. Da ich vermute, dass das ganz leicht ist, wenn man damit umgehen kann, baue ich auf eure Unterstützung :)

Hier der Aufbau des Strings (ascii-Datei):

-----------------------------
11.May.2005 , H904  ,       69.86 ,      6.02 ,    5.23
13.May.2005 , G22  ,       96.88 ,      5.76 ,    5.39
14.May.2005 , E307  ,       100.94 ,     5.46 ,    4.72
...etc
-----------------------------


Ich habe z.B. den Suchstring "E307"
Ich brauche: die in dieser Zeile dahinter stehenden Zahlen 100.94, 5.64, 4.72, die, wie zu sehen ist, durch Kommata und mehrfachen Leerzeichen voneinander getrennt sind.

Spontaner Einfall?

Vielen Dank im Voraus,
Alexander

5 Antworten zu dieser Frage

  1. Antwort von nach 59 Minuten 0 hilfreich
    Re: Regulärer Ausdruck gesucht

    Hi,

    wenn der String immer nur durch ',' getrennt wird, kannst du doch einfach string.Split(new char[] { ',', ' '}) aufrufen. Dann hast die einzelnen Teilstrings.

    lg
    georg [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

  2. Antwort von nach 11 Stunden 0 hilfreich
    Re: Regulärer Ausdruck gesucht

    Hallo,

    ich programmiere in ASP.NET und bin in der unangenehmen Lage,
    ein paar Informationen aus einem langen String extrahieren zu
    müssen. Dazu möchte ich einen Regulären Ausdruck verwenden,
    den ich jedoch nicht erstellen kann. Da ich vermute, dass das
    ganz leicht ist, wenn man damit umgehen kann, baue ich auf
    eure Unterstützung :)

    Hier der Aufbau des Strings (ascii-Datei):

    -----------------------------
    11.May.2005 , H904  ,       69.86 ,      6.02 ,    5.23
    13.May.2005 , G22  ,       96.88 ,      5.76 ,    5.39
    14.May.2005 , E307  ,       100.94 ,     5.46 ,    4.72
    ...etc
    -----------------------------


    Ich habe z.B. den Suchstring "E307"
    Ich brauche: die in dieser Zeile dahinter stehenden Zahlen
    100.94, 5.64, 4.72, die, wie zu sehen ist, durch Kommata und
    mehrfachen Leerzeichen voneinander getrennt sind.

    Spontaner Einfall?
    Hallo,

    ich hätte folgenden anzubieten:

    "\[0-9]{2}\.[a-zA-Z]{3}.[0-9]{4}[ ,]*E307[ ,]*([.0-9]*)[ ,]*([.0-9]*)[ ,]*([.0-9]*)\"


    Dieser Ausdruck müsste die drei Zahlen 100.94, 5.46 und 4.72 matchen.

    Gruss, Omar Abo-Namous

    • Antwort von nach 16 Stunden 0 hilfreich
      Re^2: Regulärer Ausdruck gesucht

      Danke!! [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

      • Antwort von nach 21 Stunden 1 hilfreich
        Re^3: Regulärer Ausdruck gesucht

        Hi!
        Moment, diese RE wird nicht funktionieren, wenn vorne keine 2 Ziffern stehen, also z.B. bei einer Zeile, die mit "4.May..." beginnt.

        Wenn's nur auf die Zahlen ankommt, die zwischen bestimmten Kommata stehen, dann kann man doch leichter die Teile nehmen, die zwischen den Kommata stehen, unabhängig vom konkreten Aufbau der Teile, die Dich ohnehin nicht interessieren. Also in etwa sowas (aus dem Kopf, kann Fehler enthalten):

        [^,]*,[^,],([^,]*),([^,]*),(.*)

        Damit bekommst Du die Zahlen samt führenden und folgenden Leerzeichen, aber das bekommt man ja leicht mit string.Trim() weg.
        Die Leerzeichen könnte man auch in der RE wegfiltern, aber das macht's etwas unübersichtlicher.

        Gruß,
        Martin [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

      • Antwort von nach 21 Stunden 0 hilfreich
        Re^3: Regulärer Ausdruck gesucht

        Ach ja, eines habe ich noch vergessen:

        http://www.codeproject.com/dotnet/RegexTutorial.asp

        Unter diesem Link findet man eine hervorragende Übersicht über reguläre Ausdrücke, solltest Du unbedingt mal lesen!

        Martin [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!