2013-08-21 20 views
0

我不得不從C++中的字符串提取多個值。我可以在Python中做到這一點,但不幸的是,對我來說,這必須在C++中完成。C++多個正則表達式提取到一個數組

例如,如果我在'blah'中包含下面的字符串,我該如何對它運行多個提取正則表達式並將每個數值傳遞給數組。 我很喜歡正則表達式,而不是C++語法。

std :: string blah =「5001 | 5002 | 5003」;

謝謝

+2

您是否檢查過標準庫中的[正則表達式庫](http://en.cppreference.com/w/cpp/regex)?你有什麼嘗試?你有什麼問題? –

+0

正則表達式字符串:「^(\\ d + \\ |)*(\\ d +)$」 – kol

+1

正則表達式在這裏是過度殺傷。只需使用'std :: istringstream',或者用'std :: stoi'自己解析它。 –

回答

1

由於C++ 11,正則表達式是C++標準庫的一部分。或者,您可以使用boost-regex。除了命名空間之外,這些API幾乎完全相同。你可以把它如下:

auto blah = std::string{"5001 | 5002 | 5003"}; 
auto values = std::vector<std::string>{ 
    std::sregex_token_iterator{blah.begin(), blah.end(), std::regex{R"(\d+)"}}, 
    std::sregex_token_iterator{}}; 

如果您需要int,而不是std::string,使用std::stoi的字符串轉換成整數。

+0

好的,謝謝。明天我會明白這一點 – user1887639