Christian Kruse: Werte aus Textdatei exhumieren

Beitrag lesen

Hallo Henry,

Als jemand, der sich ausgesprochen gut mit Regexen auskennt (sogar soweit, dass ich mal eine Engine dafür implementiert habe, um mein Verständnis zu verbessern) lass dir sagen: parse niemals XML (oder HTML) mit Regexen. Du wirst dir früher oder später eine blutige Nase holen. Das ist die Quintessenz aus allen meinen Erfahrungen damit. Ich verstehe, dass es dir sauer aufstösst, wenn dir jemand sagt „die Lösung war kacke,“ aber ich will dir nichts böses damit, im Gegenteil: ich erspare dir Stunden von Schmerzen.

hat sich in den letzten Jahren soviel verändert, dass der Gebrauch von Regex in so einem Fall schon einer Todsünde gleich kommt?

You don't get it. Nicht der Gebrauch von Regexen ist eine Todsünde, sondern der Gebrauch von Regexen zum parsen von HTML oder XML. Das schrieb ich aber auch ganz ausdrücklich, du hast es selber zitiert.

Offensichtlich. Ich kann mich noch gut an die Zeit erinnern, als PHP noch keine brauchbaren XML-Parser mitbrachte und überall im Netz allerlei Scripte auf rege Nachfrage stießen, die das Problem ebenso mit Stringfunktionen und/oder Regex angingen.

Nur weil viele Leute das Problem auf die gleiche Weise angingen heisst das nicht, dass es die richtige Methode war.

War ja auch eigentlich kein großes Ding, denn letztendlich bleibts ja doch nur ne simple Textdatei mit einer Struktur die es zu erkennen gilt. Daher tue ich mich verständlicherweise schwer das Ganze als so problematisch anzusehen, wenn das was vorher gut war auf einmal extrem schlecht sein soll.

Nein, es war auch vorher nicht gut. Nur waren damals, als XML neu war, noch viele Leute naiv genug es zu versuchen. Und die haben sich eine blutige Nase geholt dabei 😉

Wenn es kein XML ist, verwendet man ein anderes Tool um die Daten zu parsen. Das Argument ist doch nicht „verwende immer XML-Parser,“ das hat Gunnar nicht gesagt und Dedlfix und ich auch nicht. Das Argument ist „verwende das richtige Tool für den richtigen Job.“

Was wäre das dann für ein Tool, wenn zb. die vorliegende Datei jetzt nur eine simple Textdatei wäre oder ein Sammelsurium aus zusammenkopierten Inhalten in einer inkonformen HtmlDatei?

Zum parsen von HTML gibt es HTML-Parser. Versuche es nicht mit Regexen, das ist noch problematischer als die Verwendung von Regexen für das parsen von XML! 😉 Den via HTML-Parser aus der HTML-Datei extrahierten Text kannst du dann natürlich wieder mit Regexen bearbeiten, da spricht nichts gegen.

So ganz prinzipiell spricht nichts gegen die Verwendung von Regexen zum parsen von einfachen Text-Strukturen. Man muss sich halt nur über die Grenzen im klaren sein.

LG,
CK

0 145

Werte aus Textdatei exhumieren

Linuchs
  • php
  • programmiertechnik
  1. 1
    Rolf B
    1. 0
      Gunnar Bittersmann
      1. 0
        dedlfix
      2. 0
        pl
        1. 0
          Gunnar Bittersmann
          1. 0
            pl
            1. 0
              Gunnar Bittersmann
              1. 0
                pl
                1. 2
                  ThomasM
                  1. 0
                    pl
                    1. 0
                      ThomasM
  2. -2
    Henry
    • php
    • programmiertechnik
    • regex
    1. 2
      dedlfix
      1. 0
        Henry
        • meinung
        • php
        • regex
        1. 0
          dedlfix
          1. 0
            Henry
        2. 2
          Gunnar Bittersmann
          1. 0
            Henry
            1. 0
              Gunnar Bittersmann
            2. 5
              dedlfix
              1. 0
                Gunnar Bittersmann
              2. 0
                Henry
                1. 1
                  dedlfix
                  1. 0
                    Henry
                    1. 1
                      Gunnar Bittersmann
                      1. 0
                        Henry
                        1. 0
                          Gunnar Bittersmann
                          1. 0
                            Henry
                            1. 4
                              Christian Kruse
                              1. 2
                                Mitleser
                              2. 0
                                Henry
                                1. 1
                                  Christian Kruse
                                  1. 0
                                    Henry
                                    1. 0
                                      Robert B.
                                    2. 0
                                      pl
                                    3. 0
                                      Auge
                                  2. 0

                                    HTML parsen

                                    Henry
                                    • html
                                    • php
                                    • regex
                                    1. 0
                                      dedlfix
                                      1. 0
                                        Henry
                                        1. 0
                                          dedlfix
                                          1. 0
                                            Henry
                                            1. 0
                                              Henry
                                              1. 0
                                                Henry
                                                1. 0
                                                  dedlfix
                                                  1. 0
                                                    Henry
                                                    1. 0
                                                      Auge
                                                    2. 0
                                                      dedlfix
                                                      1. 0
                                                        Rolf B
                                                      2. 0
                                                        Henry
                                                        1. 0
                                                          dedlfix
                                                          1. 0
                                                            Henry
                                                            1. 0
                                                              dedlfix
                                                              1. 0
                                                                JürgenB
                                2. 0
                                  pl
                                3. 1
                                  dedlfix
                            2. 0
                              Gunnar Bittersmann
                              • browser
                              • zu diesem forum
                              1. 0
                                Christian Kruse
                            3. 0
                              Gunnar Bittersmann
                              1. 1
                                JürgenB
                              2. 0
                                Gunnar Bittersmann
                                1. 1
                                  JürgenB
                                2. 0
                                  Henry
                                  1. 0
                                    Robert B.
                                  2. 1
                                    Gunnar Bittersmann
                        2. 0
                          Robert B.
                2. 1
                  Gleiter
                  1. 0
                    Henry
                    1. 0
                      Gleiter
                  2. 0
                    JürgenB
                    1. 0
                      dedlfix
                      1. 0
                        JürgenB
                        1. 0
                          pl
                          1. 0
                            JürgenB
                            1. 0
                              Mitleser
                              1. 0
                                JürgenB
                                1. 0
                                  Mitleser
                                  1. 0
                                    pl
                                    1. 0
                                      JürgenB
                                      1. 0
                                        Auge
                                        1. 0
                                          dedlfix
                                          1. 0
                                            Auge
                                            1. 0
                                              JürgenB
                                              1. 0
                                                dedlfix
                                                1. 2
                                                  Rolf B
                                                  • humor
                                                  • meinung
                                                  1. 0
                                                    pl
                                                    1. 1
                                                      Tabellenkalk
                                                      1. 0
                                                        pl
                                                      2. 0
                                                        Rolf B
                                                        • mathematik
                                                        • meinung
                                                      3. 0

                                                        lon/lat precision

                                                        pl
                                                        1. 0
                                                          JürgenB
                                                          1. 0
                                                            Auge
                                                            1. 0
                                                              JürgenB
                                                              1. 0
                                                                pl
                                                            2. 0
                                                              Matthias Apsel
                                                              1. 0
                                                                MudGuard
                                                          2. 0
                                                            pl
                                                            1. 0
                                                              JürgenB
                                                              1. 0
                                                                Tabellenkalk
                                                                1. 0
                                                                  JürgenB
                                                          3. 0
                                                            Gunnar Bittersmann
                                                            1. 0
                                                              JürgenB
                                                              1. 0
                                                                Robert B.
                                                                1. 0
                                                                  Tabellenkalk
                                                                  1. 0
                                                                    Gunnar Bittersmann
                                                                    1. 0
                                                                      Tabellenkalk
                                                                      1. 0
                                                                        Robert B.
                                                                        • humor
                                                                        • mac
                                                                        • meinung
                                                                    2. 0
                                                                      Regina Schaukrug
                                                                      1. 0
                                                                        Mitleser
                                                                2. 0
                                                                  JürgenB
                                                                  1. 0
                                                                    Robert B.
                                                                    1. 0
                                                                      JürgenB
                                                                3. 1
                                                                  Matthias Apsel
                                                                  1. 0
                                                                    Robert B.
                                                                    • humor
                                                                    • meinung
                                                                    • selfhtml-wiki
                                                                    1. 0
                                                                      Gunnar Bittersmann
                                                                      1. 0
                                                                        Matthias Apsel
                                                                        1. 0
                                                                          Gunnar Bittersmann
                                                                          1. 0
                                                                            Matthias Apsel
                                                                            1. 0
                                                                              Gunnar Bittersmann
                                                                          2. 0
                                                                            Rolf B
                                                                            1. 0
                                                                              Gunnar Bittersmann
                                                              2. 0
                                                                pl
                                                            2. 0
                                                              Matthias Apsel
                                                              • humor
                                                    2. 0
                                                      Rolf B
                                                      1. 0
                                                        pl
                                      2. 0
                                        pl
                                2. 0
                                  pl
                                3. 0
                                  dedlfix
                            2. 0
                              pl
                    2. 0
                      Gunnar Bittersmann
                    3. 0
                      Gleiter
                      1. 0
                        JürgenB
        3. 2
          Christian Kruse
        4. 0
          Robert B.
          1. 0
            Henry
    2. 0
      Robert B.
    3. 0
      t-rex rox
      1. 1
        Gunnar Bittersmann
  3. 2
    ThomasM
    1. 0
      Rolf B
      1. 0
        Gunnar Bittersmann
  4. 0
    JürgenB
    1. 0
      pl
      1. 0
        JürgenB
        1. 0
          pl