in

Datum aus Zeile extrahieren

Letzter Beitrag 02-26-2010 23:45 von mp3hacker. 2 Antworten.
Seite 1 von 1 (3 Treffer)
Beiträge sortieren: Zurück Weiter
  • 02-26-2010 15:55

    Datum aus Zeile extrahieren

    Hallo.

    Ich habe eine Problem mit den Datum. Ich lese eine Textdatei ein, in der immer mal wieder folgende Zeile vorkommt

           Liefertermin (Tag): 17.02.2010

    Daraus möchte ich natürlich das Datum extrahieren, doch mein Problem ist ich kann das Datum nicht extrahieren.

     

            'Liefertermin Nummer
            Dim re1 As String = ".*?"           'Non-greedy match on filler
            Dim re7 As String = "(/^\d{1,2}\.\d{1,2}\.\d{4}$/)"    'Word 6
            Dim r5 As Regex = New Regex(re1 + re7, RegexOptions.IgnoreCase Or RegexOptions.Singleline)

     

    Unten habe ich dann einen Vergleich angestellt:

     

                If (m5.Success) Then                'Liefertermin
                    Dim word6 As Group = m5.Groups(1)
                    'erste 13 Zeichen abschneiden
                    Dim lief As String = word6.ToString.Remove(0, 20)
                    Console.WriteLine(word6.ToString)
                    exWS.Range("G" & zählerf).Value = lief
                    zählerf = zählerf + 1
                End If

     

    Aber leider hilft es mir auch nicht weiter.

    Hat jemand eine Idee wie ich am besten dieses Datum aus dieser Zeile extrahieren kann.

    Manchmal kann auch noch 

                  Liefertermin unbestätigt

     stehen, dann soll eben das unbestätigt stehen. Doch alle meine Versuche sind bisher gescheitert.

     

    Selbst wenn ich 

             'Liefertermin Nummer
            Dim re7 As String = "(Liefertermin (Tag): 17.02.2010)"    'Word 6
            Dim r5 As Regex = New Regex(re1 + re7, RegexOptions.IgnoreCase Or RegexOptions.Singleline)

    verwendet habe ging es nicht. Jemand eine Idee?

    Abgelegt unter: ,
    • IP-Adresse ist Registriert
  • 02-26-2010 20:59 Antwort zu

    • Peter_Punkt
    • Top 10 Mitwirkender
    • Registriert am 03-28-2007
    • VS Community 2015, VB, C#, Office 2010, Win 10
    • Beiträge 2.605

    AW: Datum aus Zeile extrahieren

    Antworten

    So geht's:

    Bei dieser Aufgabenstellung treten gleich mehrere Probleme auf:

    Umlaute im Suchmuster (z.B. ä) sind nicht erlaubt.

    Klammer () haben eine besondere Bedeutung. Wenn man sie als normale Zeichen behandelt wissen will, dann muß man \ voranstellen.

    Außerdem muß man die erzielten Treffer nachbehandeln und Teile (z.B. "(Tag): ") entfernen.

    Code-Beispiel:

                Dim re6 As String = "(?<=Liefertermin )(\(Tag\): \d{2}\.\d{2}\.\d{4})|(unbest){1}"
                Dim r2 As Regex = New Regex(re6, RegexOptions.IgnoreCase Or RegexOptions.Singleline)
                Dim m2 As Match = r2.Match(txt)     ' In txt ist der zu untersuchende String
    
                If (m2.Success) Then
                    Dim word3 As Group = m2.Groups(0)
                    Dim treffer As String = word3.ToString
                    If treffer = "unbest" Then      ' bis zum ä
                        treffer = "unbestätigt"
                    Else
                        treffer = treffer.Replace("(Tag): ", "") ' den Vorspann vor dem Datum entfernen
                    End If
                    Debug.WriteLine(treffer)
                End If
    Zwar weiß ich viel, doch möcht' ich alles wissen.
    Dass ich erkenne, was die Welt im Innersten zusammenhält
    Abgelegt unter: ,
    • IP-Adresse ist Registriert
  • 02-26-2010 23:45 Antwort zu

    AW: Datum aus Zeile extrahieren

    Erstmal danke für die Antwort. Ich seh schon Regex hat ziemlich viele komplexe Regeln... 

    Danke nochmals für das Beispiel, werde es am Montag dann umsetzen.

    Aber wie schon beim letzten Mal hast du mir wieder gut weitergeholfen und manches Trial & Error erspart. 

    • IP-Adresse ist Registriert
Seite 1 von 1 (3 Treffer)