Boost.Regex Problem



  • Ja öhm, hallo^^

    Ich habe aufgrund der Plattform-Unabhängigkeit ein kleineres Projekt auf Boost.Regex umgestellt, wobei sich jedoch ein kleineres Problem ergeben hat.

    Zuerst downloade ich den Quelltext einer Website, in welchem ich danach per regex nach einer nbestimmten Textpassage suche und daraus eine ID exportiere.

    Bei der Bibliothek, die ich vorher genutzt habe, ging eine Anweisung wie

    if(pcrecpp::RE("index.php\\?seite=spieler&id=(\\d+)").PartialMatch(this->download(), &id))
    

    ohne Probleme.

    Unter Boost macht allerdings die Anweisung

    if(boost::regex_match(this->download(), what, boost::regex("index.php\\?seite=spieler&id=(\\d+)")))
    

    Probleme.

    Es scheint mir so, als würde die Anweisung nur true zurückgeben, wenn der Regex sich auf den ganzen Text anwenden lässt.
    Dies folgere ich daraus, dass es funktioniert, wenn ich am Anfang und am Ende des Regex jeweils ".+" anfüge.

    Ich vermute, dass ich als letztes Argument noch irgendwelche Flags angeben muss, ich weiß jedoch nicht welche und werde auch aus der Dokumentation nicht schlau.
    Probiert habe ich bereits boost::match_partial sowie match_default und ähnliche, keine hat den erwünschten Erfolg gebracht.

    Lange Rede, kurzer Sinn: Wer weiß, wo dass Problem liegt?



  • Hi,

    The-Kenny schrieb:

    Es scheint mir so, als würde die Anweisung nur true zurückgeben, wenn der Regex sich auf den ganzen Text anwenden lässt.

    bist schon nahe dran 🙂 :

    boost schrieb:

    Note that the result is true only if the expression matches the whole of the input sequence. If you want to search for an expression somewhere within the sequence then use regex_search. If you want to match a prefix of the character string then use regex_search with the flag match_continuous set.

    Das sollte selbsterklären sein ...



  • Ups, da hab ich wohl mal wieder text übersprungen -.-
    Muss ich mir abgewöhnen *g*

    Danke nochmal.


Anmelden zum Antworten