in

Preis und PE (1 ODER 100) finden mit Regex

Letzter Beitrag 03-08-2010 10:24 von mp3hacker. 2 Antworten.
Seite 1 von 1 (3 Treffer)
Beiträge sortieren: Zurück Weiter
  • 03-04-2010 17:44

    Preis und PE (1 ODER 100) finden mit Regex

    Ich habe fast mein Problem mit dem Preis gelöst.

    Mit diesem Code

             'Preis
            Dim re7 As String = "[0-9]+\,[0-9]+$"   'word 5
            Dim r4 As Regex = New Regex(re7, RegexOptions.IgnoreCase Or RegexOptions.Singleline)

    Dim m4 As Match = r4.Match(txt)     'Preis

                     If (m4.Success) Then                'Preis
                        Dim word5 As Group = m4.Groups(0)
                        Dim hteam As String = word5.ToString
                        'Console.WriteLine(hteam)
                        exWS.Range("F" & zählerb - 1).Value = hteam
                    End If

     

     wird mir in folgendem Text:

     

    000170 R2.066.0030.1       KZL91 120H AC/DC 24-230V 50-60HZ (B)
           alte Materialnummer: #06614155
           Ihre Artikelnummer: 32135
                           15 ST          54,10 EUR /       1 ST            811,50
           Rabatt                         52,50-%                           426,04-
           Positionsnetto                 25,70 EUR /       1 ST            385,46
            ST
           Liefertermin unbestätigt
    000180 56.702.9253.0       SCHUTZLEIT.KLEMMEWKF 1,5 E2/SL/35
           Ihre Artikelnummer: 32656
                          100 ST         429,39 EUR / 100 ST                429,39
           Sonderrabatt 1                 62,00-%                           266,22-
           Positionsnetto                163,17 EUR / 100 ST                163,17
            ST
           Liefertermin (Tag): 17.02.2010
    000190 Z7.261.1127.0       VERB.STECKER       IVB WKF-V
           Ihre Artikelnummer: 33301
                          100 ST          78,89 EUR / 100 ST                 78,89
           Sonderrabatt 1                 62,00-%                            48,91-
           Positionsnetto                 29,98 EUR / 100 ST                 29,98
            ST
           Liefertermin (Tag): 17.02.2010
    __________________________________________________________________________________
    Summe Positionen                                                                                                      3.476,88
    Nettowert                                                                                                             3.476,88
    Mehrwertsteuer                           19,0 %                              3.476,88 EUR                               660,61
    Skonto                                  3,000- %                                4.137,49                                124,12-
    Endbetrag                                                                                                             4.137,49

    Zahlungsbedingungen: Bis zum 10. des Folgemonats 3,000                                       % Skonto
                         Innerhalb 60 Tagen ohne Abzug

    Lieferbedingungen:                  frei Haus/frei Werk

     

    folgende Preis gefunden:

    385,46

    163,17

    aber statt 29,98 wird dann 137,49 genommen.

     

    Hat jemand eine Lösung, wie ich die Regex noch so umbauen könnte, dass er mir schon immer den letzten Preis im Block nimmt, aber NIE denn Gesamtpreis?

     

    Als Regelmäßig ist ja immer noch das ST dahinter, könnte das vielleicht noch helfen?

     

    Zweitens bräuchte ich noch die PE (die steht immer vor dem Preis und hat dahinter noch ein ST, allerdings kann das ST mal 1 oder auch mal mehrere Leerzeichen dahinter kommen) die entweder 1 oder 100 ist.

     

    Habe es mit folgender Regex schon probiert

    100|1+$

    aber da kommen dann bei 100 ST auch mal 1 raus und somit habe ich noch Fehler drin.

     

    Danke für eine Hilfe.

    Abgelegt unter: ,
    • IP-Adresse ist Registriert
  • 03-04-2010 20:26 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: Preis und PE (1 ODER 100) finden mit Regex

    So geht's:

    Zunächst testen ob in der Zeile steht: Das Wort  Positionsnetto      gefolgt von      einem oder mehreren Zeichen    bis die Zeichenfolge      ST     kommt und auf diese wieder      ein oder mehrere Zwischenraumzeichen     folgen.

    Dann muß man noch berücksichtigen, daß der gesuchte Betrag mehrere Tausenderpunkte haben kann , z.B.     12.345.678,90  und immer genau 2 Dezimalstellen hat.

    Das Suchmuster muß also so aussehen:  

            Dim re7 As String = "(?<=Positionsnetto.+ ST\s+)([0-9]{1,3}.)*[0-9]{1,3},[0-9]{2}"   'word 5
    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
  • 03-08-2010 10:24 Antwort zu

    AW: Preis und PE (1 ODER 100) finden mit Regex

    Erstmal wieder danke, durch deine Erklärungen hat sich mir  dann auch das Suchmuster für die PE (1 oder 100) erschlossen.

    Hier das Suchmuster, dass ich zuerst ausprobiert habe.

    Dim re8 As String = "(?<=Positionsnetto.+ EUR\s+/\s+) [0-9]{1,3}" 'word 7

    Das hat aber dann nicht genau hingehauen, da damit zwar

           Positionsnetto                  8,33 EUR                                     /   100      ST                               16,66

    und

           Positionsnetto                 71,66 EUR /                                   100    ST                              71,66

    abgedeckt waren.

    Aber solche Zeilen wie diese hier:

                  Positionsnetto                  41,09 EUR / 100 ST                                                            82,18

    wurden verworfen.

    Also habe ich nun folgendes Suchmuster angewendet:

    Dim re8 As String = "(?<=Positionsnetto.+ EUR.+) [0-9]{1,3}" 'word 7

    Sprich in der Zeile muss das Wort Positionsnetto gefolgt von einem oder mehreren Zeichen bis die Zeichenfolge EUR kommt und auf diese wieder  ein oder mehreren Zeichen folgen und dann eine Zahl mit 1 oder 3 Ziffern (also entweder 1 oder 100).

    Nur so als Hilfestellung, falls jemand mal ähnliche Probleme hat.

    Abgelegt unter: ,
    • IP-Adresse ist Registriert
Seite 1 von 1 (3 Treffer)