Ich muss eine C++ Regex schreiben, aber ich bin nicht in der Lage, korrektes Ergebnis auf Regex_match zu erhalten, da ich neu in C++ bin. Die Zeichenfolge zum Testen ist: D10A7; Lass uns sagen unsigned_char[] stringToBeTested="D10A7";
Was ich tun muss, ist nach Regex_match Ich werde 10 und 7 in zwei verschiedenen kurzen Variablen für die Anwendung zu extrahieren. Ziffer nach 'D' ist immer zweistellig und Ziffer nach 'A' ist immer eine Ziffer. Mein Versuch, es zu tun ist:Warum regex_match stimmt nicht mit meiner Regex überein?
boost::regex re("D([0-9])(/([0-9]))?");
boost::cmatch mr;
if (boost::regex_match(stringToBeTested, mr, re))
{
number = atoi(mr.str(1).c_str()); //Must be 10
axis = atoi(mr.str(2).c_str()); //Must be 7
}
Wie die boost :: regex re für diesen Zustand zu erzeugen, erklären Sie bitte die Antwort im Detail.
Was ist mit dem Schrägstrich? Es gibt keinen Schrägstrich in der Zeichenfolge, die Sie abgleichen möchten. –
Auf einer Randnotiz empfehle ich, mehr C++ ish ['std :: stoi()'] (http://en.cppreference.com/w/cpp/string/basic_string/stol) zu verwenden, was Ihnen erlaubt Entfernen Sie die '.c_str()', die in reinem C++ - Code nicht verwendet werden sollten, z. G. 'number = stoi (mr.str (1))'. – zett42