In Strings nach regulären Ausdrücken suchen



  • @Finnegan sagte in In Strings nach regulären Ausdrücken suchen:

    Anfänger

    Erster eruierbarer Beitrag hier im Forum ist vom 4. Sept. 2012, 23:41 ...



  • Hi(gh)!

    @Swordfish

    Ja, aber Programmieren ist eine Sache, wo man tagtäglich dranbleiben muss - ansonsten bleibt man ein Leben lang Anfänger! Leider ist Programmieren nicht mein einziges Hobby, sonst hätte ich wahrscheinlich mittlerweile mehr Durchblick...

    Bis bald im Khyberspace!

    Yadgar



  • https://www.google.com/search?q=position+match+regex+c%2B%2B

    zweites Ergebnis: https://stackoverflow.com/questions/27927913/find-index-of-first-match-using-c-regex

    ansonsten bleibt man ein Leben lang Anfänger!

    Quatsch mit Soße. Ohne Eigeninitiative bleibt man ein Leben lang Anfänger.



  • @Finnegan
    Nein, das ist zu kompliziert für mich, da macht mein Gehirn die Grätsche! Gibt es keine einfachere Sprache als C++, um Inhalte aus HTML-Codetexten zu extrahieren?



  • Hi(gh)!

    Da ich offensichtlich zu dumm bin, um die Implementation regulärer Ausdrücke in <regex> zu verstehen, hier meine Lösung für Dumme (bzw. C++-Traditionalisten, die mit diesem neumodernen ECMAScript-Zoix nix am Hut haben):

      unsigned int pw[10]; // Array für Suchergebnisse für die Ziffern 0 bis 9
      unsigned short int i;
      unsigned int pos;
      
      occ = source.find("itemprop=\"locality\">");
      for (i=0; i<10; i++)
      {
        pw[i] = source.find((char)48+i, occ);
        if (i == 0)
          pos = pw[i];
        else
          if (pw[i] < pos)
            pos = pw[i];
      }
      for (i=0; i<10; i++) // Testausgabe
        cout << pw[i] << endl;
      
      cout << "Erstes Vorkommen einer Zahl ab Stelle " << occ << ": " << pos << endl; // Testausgabe


  • @Yadgar sagte in In Strings nach regulären Ausdrücken suchen:

    @Finnegan
    Nein, das ist zu kompliziert für mich, da macht mein Gehirn die Grätsche! Gibt es keine einfachere Sprache als C++, um Inhalte aus HTML-Codetexten zu extrahieren?

    Als ich das letzte mal so etwas benötigt habe, habe ich das mit dem Kommandozeilen-Tool Xidel gemacht und die Abfrage in XQuery geschrieben, um die (unstrukturierten) Daten in mehreren HTML-Dokumenten in (strukturierte) JSON-Daten zu transformieren.

    Ich fand, dass man damit recht gut selbst komplexe HTML-Dokumente handhaben kann - allerdings muss man sich da auch erstmal etwas einarbeiten. Vielleicht ist das ja auch eine Lösung für dein Problem. C++ wäre für sowas jedenfalls nicht meine erste Wahl - besonders bei Problemen, bei denen man garantiert nicht der erste ist, der das hat, schaue ich mir erstmal an, ob vorhandene Lösungen ausreichend sind.



  • Hi(gh)!

    @Finnegan
    Na ja, mittlerweile komme ich ja schon wieder gut voran, auch ohne <regex> - aber es ist natürlich C++ wie vor 25 Jahren (das war auch die Zeit, als ich meinen ersten Volkshochschul-C++-Kurs hatte und damals Feuer und Flamme für die Sprache war...)...

    Bis bald im Khyberspace!

    Yadgar



  • Vielleicht erzählst Du mal zur Abwechslung was Du konkret erreichen willst anstatt wild rumzuschießen. HTML kannst Du mit regex sowieso nicht parsen.



  • @Yadgar sagte in In Strings nach regulären Ausdrücken suchen:

    pw[i] = source.find((char)48+i, occ);
    

    Unabhängig vom Thema: Wenn Du '0' meinst, dann schreib '0' hin.



  • Hi(gh)!

    @Swordfish sagte in In Strings nach regulären Ausdrücken suchen:

    Vielleicht erzählst Du mal zur Abwechslung was Du konkret erreichen willst anstatt wild rumzuschießen. HTML kannst Du mit regex sowieso nicht parsen.

    Also: Mein Programm "oac" (Organ Ad Compressor) soll auf Festplatte gespeicherte eBay-Kleinanzeigen elektronischer Orgeln auf ihre essentielle Information reduzieren: Anzeigentext, Benutzername, Anzeigendatum, Ort und Preis und diese Informationen in ein rudimentäres HTML-Gerüst, gerade umfangreich genug, um als fehlerfreier HTML-Code angezeigt zu werden, einfügen; ferner sollen auch alle großformatigen Fotos des angebotenen Artikels eingebunden werden (im Original zu erkennen am Dateinamen "72_[kein Zeichen oder dreistellige laufende Nummer mit führenden Nullen].JPG"). Außerdem sollen die reduzierten HTML-Dateien mitsamt ihren Bilddateien in Ordner geschrieben werden, die fortlaufend nach dem Schema "YYYYMMDD_%03d" benannt sind, dies soll ebenfalls der Name der jeweiligen HTML-Datei sein.

    Warum ich das mache? Es handelt sich um mehrere zehntausend Dateien, die mit all dem Overhead, der heutzutage mit kommerziellen HTML-Dateien einhergeht, rund 300 GB auf meiner Festplatte einnehmen. Nach einer solchen Reduktion auf die Kerninformation werden es voraussichtich noch 6 GB sein... die Dummenlösung wäre, jetzt einfach noch eine externe Festplatte zu kaufen (prollerolleroll) - aber dafür fehlt mir das Geld.

    Die Kerninformationen der Anzeigen (darunter selbstverständlich auch das entweder aus dem Anzeigentext oder den Fotos ersichtliche Orgelmodell) will ich im Rahmen meiner GREENBOOK-E-Orgel-Datenbank in eine Marktspiegel-Statistik einpflegen - dies dann natürlich manuell.

    Bis bald im Khyberspace!

    Yadgar


Anmelden zum Antworten