Andreas: Brauche Hilfe bei regulärem Ausdruck!

Beitrag lesen

Hi!

Hätte ich nie gedacht, nur die regulären Ausdrücke sind noch sehr wirr :-) Ich mach das lieber "zu Fuß", etwas komplizierter, naja - fehlt noch die Erfahrung.

Also, wenn du das anders machen willst, viel Spass beim Programmieren ;)
Ich glaube, dass hier RegularExpressions in Anbetracht des Zeitaufwandes die beste Lösung sind.

nein, ich meinte meine RegEx ist noch etwas komplizierter als es sein muß :-)

Ay caramba, sieht ja ziemlich krass aus. Es scheint du hast etwas gegen meine (.*?)'s zu haben??? - was machst du denn mit ([0-9]{1,5}.[0-9]{2})??? - Die Zahl auslesen, klar. Aber das geht viel einfacher mit (.*?)! - Ist einige Bytes kürzer...

ich verstehe halt nicht, was das ist :-) (.*) verstehe ich, bedeutet irgendein Zeichen(0-unendlich viele) außer newline, oder? Aber was soll dann noch das '?' ?

Ach so, also hier die Erklärungen:

* : Matched 0 oder mehrmals

  • : Matched 1 oder mehrmals
    ? : Matched 0 oder 1 mal.

Aber was soll jetzt das Konstrukt (.*?)? :

Normalerweise ist die RegEngine so konfiguriert, dass sie _möglichst_ viel matched. Was wir aber in deinem Beispiel brachen, ist exakt der String zwischen <b> und </b> und nicht zwischen dem ersten Vorkommen von <b> und dem _letzten_ von </b>. Das kann man mit (.*?) machen, dann wird nämlich die kleinst mögliche String gematched (das ? am Schluss bewirkt dies), als beispiel:

hello <b>world</b> <b>hello</b>

bei */+ wird der erste Match "world</b> <b>hello", jedoch bei (.*?) wird nur "world" geliefert. Also der kleinst mögliche Match.

SEHR INTERESSANT!

die '<' und '>' musst du übrigens nicht escapen.
hatte alles mögliche verändert, aber hast Recht!

Allgemein: Du hast einen String mit zwei Werten die du kennst (<b> und </b> im Beispiel) und suchst die Zeichenfolge (eg. WKN im Beispiel), welche genau zwischen diesen beiden Tags steht; das geht am einfachsten über <b>(.*?)</b>. Also ich konnte so das ganze Problem lösen und mein Perl-progi was ich gepostet hatte, hat auch funktioniert.

das problem, <b></b> kommt mehrmals in der zeile vor! Deine version funkionierte definitiv nicht bei mir. Hab das aber mal vereinfacht, kann man da jetzt noch mehr vereinfachen? beachte das ich links von $wkn noch den Namen extrahiere, der aus Buchstaben aber auch aus codierten Umlauten besteht:

/>([\w&;.\s_-]+)</a>.*$wkn</td>\s.*<b>(.*?)</b><br/i

Wenn ich den Vorderen Ausdruck auch durch (*.?) ersetze, pasiert folgendes: http://www.knet-systems.de/fso.php

Upsa, jep, wohl nicht grad das gewollte Ergebnis :-(
(.*?) statt (*.?)...?
Aber wenn du links und rechts von (.*?) eine bekannte Zeichenfolge hast, sollte es eigentlich schon funktionieren (wie gesagt, bei mir hat es ja wunderprächtig funktioniert, sogar mit mehreren <b>(.*?)</b> - Kombinationen).

ich habe da auch (*.?) stehen, habe mich vertippt im Posting. Aber bedenke, das ich den Ausdruck noch nach "rechts" ausgebaut habe, das hattest Du vorher nicht, deiner fing erst bei $wkn an, und hat noch ein paar Daten mehr, aber links davon gespeichert.

So wie darüber geht es ohne Probleme!

Ich kann mir zwar nicht erklären, warum; aber wenns funktioniert ist's ja OK und kannst es so lassen.
PS: Du hast doch Perl installiert, nicht? - Dann kannst ja mal

Mit einem falschen Zeichen kann man schon ne ganze Menge verhunzen!

perldoc perlre

Ja, aber wo ausführren? In SSH geht das nicht, auch nicht mit '$' der 'perl' davor. Wo sonst?

ist das was anderes als 'man perl' in der SHELL?

Grüße
Andreas

0 48

Aktienkurse automatisch von Internetseite abfragen

Andreas
  • programmiertechnik
  1. 0
    Günter Frhr.v.Gravenreuth
    1. 0
      Philipp Hasenfratz
    2. 0
      Andreas
      1. 0
        Philipp Hasenfratz
        1. 0
          Rol
          1. 0
            Philipp Hasenfratz
          2. 0
            Philipp Hasenfratz
          3. 0
            Matti Maekitalo
            1. 0
              Philipp Hasenfratz
            2. 0

              Spreadsheet::WriteExcel erzeugt "kaputte" xls-Datei!?

              Andreas
              1. 0
                Philipp Hasenfratz
                1. 0
                  Andreas
                  1. 0
                    Philipp Hasenfratz
                    1. 0
                      Andreas
                      1. 0
                        Philipp Hasenfratz
                        1. 0
                          Rol
                          1. 0
                            Philipp Hasenfratz
                            1. 0
                              Andreas
                              1. 0
                                Philipp Hasenfratz
                                1. 0
                                  Andreas
                                  1. 0

                                    Wanted: Linux-Specialist

                                    Philipp Hasenfratz
                                  2. 0
                                    Matti Maekitalo
                                    1. 0
                                      Andreas
                                      1. 0
                                        Matti Maekitalo
                                        1. 0
                                          Andreas
                  2. 0

                    ich liebe dieses Modul ;)

                    Philipp Hasenfratz
                    • software
    3. 0
      Reiner
  2. 0
    Philipp Hasenfratz
    1. 0
      Andreas
      1. 0
        Philipp Hasenfratz
  3. 0
    Matti Maekitalo
  4. 0
    Michael Schröpl
    1. 0
      Andreas
  5. 0

    Brauche Hilfe bei regulärem Ausdruck!

    Andreas
    1. 0
      Philipp Hasenfratz
      1. 0
        Andreas
        1. 0
          Andreas
          1. 0
            Andreas
            1. 0
              Philipp Hasenfratz
              1. 0
                Andreas
                1. 0
                  Philipp Hasenfratz
                  1. 0
                    Andreas
                    1. 0

                      wieder vertippt ;-)

                      Andreas
                      • menschelei
                      1. 0
                        Philipp Hasenfratz
                    2. 0
                      Philipp Hasenfratz
          2. 0
            Philipp Hasenfratz
        2. 0
          Philipp Hasenfratz