Hallo Pit,

ich sehe das nicht so negativ wie Jörg (ursus fastixiabundo :) ).

Wenn Du die einleitenden Codes separat haben willst, kannst Du das so machen:

/^(?<startwort>AB[\w\d]+)\s+(?<startplus>(AB[\w\d]+\s+)+)(?<vorwort>.*)\s+(?<zahl>\d+)\s+(?<wort>\w+)\s+(?<betrag>[\d.,]+)\s*$/

Ich habe mal deine Aussage eingebaut, dass die Codewörter am Zeilenanfang immer mit AB starten. Und ich habe auf \w und \d umgestellt, statt [A-Z] und [0-9]. Ist vermutlich besser so. Es matcht dann auf jeden Fall auch die Kleinbuchstaben, und je nach locale-einstellungen auf deinem Server auch Akzentzeichen (áàâä und Familie)

Zerlegt in die einzelnen Teile:

^ Zeilenstart (?<startwort>AB[\w\d]+) Erstes AB238423 Wort -> $matches['startwort'] \s+ Leerraum (?<startplus>(AB[\w\d]+\s+)+) 1-N AB293482309 Worte -> $matches['startplus'] (?<vorwort>.*) Freitext -> $matches['vorwort'] \s+ Leerraum (?<zahl>\d+) Int-vor dem letzten Wort -> $matches['zahl'] \s+ Leerraum (?<wort>\w+) letztes Wort -> $matches['wort'] \s+ Leerraum (?<betrag>[\d.,]+) Betrag -> $matches['betrag'] \s* optionaler Leerraum $ Zeilenende

Für mich ist bei solchen Aufgaben die Seite regex101.com sehr hilfreich. Da bekommst Du erklärt, was die Regex tut, und kannst sie ausprobieren.

Rolf

-- sumpsi - posui - clusi
freiwillige Angabe, für jeden sichtbar
freiwillige Angabe, für jeden sichtbar
freiwillige Angabe, für jeden sichtbar

Vorschau (Nachricht wird im Forum „SELF-Forum“ erscheinen)

  • Keine Tag-Vorschläge verfügbar
  • keine Tags vergeben

abbrechen

071

Nochmal Regex gesucht

  1. 0
    1. 0
    2. 0
      1. 0
        1. 0
          1. 0
            1. 0
              1. 0
                1. 0
                  1. 0
                    1. 0
                  2. 0
                    1. 0
                      1. 0
                        1. 0
                          1. 0
                            1. 0
                              1. 0
                                1. 0

                                  So geht es fast...

                                  1. 0

                                    Diese Zeile krieg ich nicht gematcht

                                    1. 0
                                      1. 0
                                        1. 0
                                          1. 0
                                            1. 0
                                              1. 0

                                                Lösungsalternative: pdftotext

                                          2. 0
                                            1. 0

                                              Diese Zeile krieg ich nicht gematcht - weitere Vereinfachung

                                    2. 0
                                      1. 0
                                        1. 0
                                          1. 0
                                            1. 0
                                              1. 0
                                                1. 0
                                                2. 0
                                                  1. 1
                        2. 0
                        3. 0
                          1. 0
                            1. 0
                              1. 0
                  3. 0

                    Nach Deinen Ergänzungern verbesserte Lösung

                    1. 0
                      1. 0
                        1. 0
                          1. 0

                            Tips zur Fehlersuche

                            1. 0
                              1. 0

                                Du bist nicht allein ...

                                1. 0
                  4. 0
                    1. 0
                      1. 0
              2. 0

                Vorhersehbar untauglicher Lösungsversuch

              3. 0
          2. 0
            1. 0
          3. 0
            1. 0
      2. 0
        1. 0
          1. 0
          2. 0
            1. 0
              1. 0
                1. 0
                  1. 0
            2. 0
      3. 0
        1. 0