Wyrażenia regularne - wyszukiwanie liczb

Wyrażenia regularne - wyszukiwanie liczb
B1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
0

Chcę wyszukać wszystkie liczby w ciągu: "50 12 40 12"
Pierwszy raz próbuje w praktyczny sposób użyć wyrażeń regularnych, wcześniej napisałbym po prostu funkcję, która przelatuje ciąg i sprawdza czy znak jest liczbą, jeżeli tak to zapisuje ów znak do bufora, a jeżeli nie, to pomija itd
Programik:

Kopiuj
#include <iostream>
#include <string>
#include <regex>

int main()
{
	std::string str = "50 12 40 12";

	std::tr1::cmatch res;

	std::tr1::regex rx("((\\d\\d)|(\\d\\d\\s))");

	std::tr1::regex_search(str.c_str(), res, rx);


	for (auto i = 0; i < res.size(); i++)
	{
		std::cout << res[i] << std::endl;
	}

	std::cout << res.size();

	system("Pause");

	return 0;
} 

Jako wynik otrzymuję:
50
50
50

A chciałbym wszystkie liczby. Próbowałem już wielu sposób, to albo otrzymuję to samo, albo pusty wynik, albo samo 50.
Możecie mi podpowiedzieć co robię źle? Albo chociaż podesłać dobry artykuł, gdzie wyjaśnione są dobrze wyrażenia regularne?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
2

Co robisz źle? Nie czytasz dokumentacji.
http://www.cplusplus.com/reference/regex/regex_search/
Popatrz wyraźnie na przykład który oferują i porównaj go z twoim kodem. Czegoś ci brakuje?

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
1

Jak wyszukujesz samych liczb, to regexa też byś mógł poprawić:

Kopiuj
std::regex rx(R"((\d+))");

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.