Bosst Regex verhält sich unlogisch
-
Guten Tag. Nach endlosen Suchen habe ich es jetzt endlich geschafft die Bosst-Libraries auf meinem PC zu installieren.
Jetzt habe ich einfach mal ein kleines Programm zum Testen geschrieben.
Leider funktioniert der Pattern "\\d" nicht. Ich kann das einfach nicht nachvollziehen.int RegexpSearch(string str, string pattern, vector<string> &results) { int return_value = 0; boost::regex re(pattern); //Der reguläre Ausdruck boost::match_results<string::const_iterator> matches; string::const_iterator begin, end; begin =str.begin(); end = str.end(); for (unsigned int i=0;boost::regex_search(begin, end, matches, re);i++) { return_value = 1; if (results.size() != i+1) results.resize(i+1); results[i] = matches[0]; begin = matches[1].second; } return return_value; } int main() { vector<string> results; int h = RegexpSearch("5", "\\d", results); cout << h << endl; if (h!=0) cout << results[0] << endl; return 0; }//nur ein kleiner ausschnitt des CodesBei mir findet er die 5 aus irgendeinem Grund nicht. Das ist wirklich sehr merkwürdig.
mfg BoostUser
-
Funktionieren denn andere Pattern?
Bist du sicher dass die Boost.Regex Grammatik \d überhaupt kennt/unterstützt?
-
Ja, die anderen Pattern funktionieren sehr gut.
Bist du sicher dass die Boost.Regex Grammatik \d überhaupt kennt/unterstützt?
Ja, da bin ich mir sehr sicher. Eigentlich habe ich die BosstRegex-Library installiert, damit ic hein altes (von mir geschriebenes) Programm wieder in Betrieb nehmen kann, aber leider hängt es jetzt an dieser Stelle. Ich kann das wirklich überhaupt nicht nachvollziehen.
-
Mittlerweile habe ich eine simple Möglichkeit gefunden, um etwas zu improvisieren.
\\d+ == [0-9]+Das funktioniert bei mir sehr gut. Ich habe noch mal ein bisschen mit Beispielen rumprobiert und dabei ist mir dieser Pattern aufgefallen:
\\d{3}\\-\\d{2}\\-\\d{4}Wenn ich den Text 333-222-4444 damit überprüfe, krepiert das Programm sofort.
Vllt. kennt ja jemand das problem. Um die Boost Library zu installieren, habe ich diesen Installer benutzt.
mfg