我不得不從C++中的字符串提取多個值。我可以在Python中做到這一點,但不幸的是,對我來說,這必須在C++中完成。C++多個正則表達式提取到一個數組
例如,如果我在'blah'中包含下面的字符串,我該如何對它運行多個提取正則表達式並將每個數值傳遞給數組。 我很喜歡正則表達式,而不是C++語法。
std :: string blah =「5001 | 5002 | 5003」;
謝謝
我不得不從C++中的字符串提取多個值。我可以在Python中做到這一點,但不幸的是,對我來說,這必須在C++中完成。C++多個正則表達式提取到一個數組
例如,如果我在'blah'中包含下面的字符串,我該如何對它運行多個提取正則表達式並將每個數值傳遞給數組。 我很喜歡正則表達式,而不是C++語法。
std :: string blah =「5001 | 5002 | 5003」;
謝謝
由於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
的字符串轉換成整數。
好的,謝謝。明天我會明白這一點 – user1887639
您是否檢查過標準庫中的[正則表達式庫](http://en.cppreference.com/w/cpp/regex)?你有什麼嘗試?你有什麼問題? –
正則表達式字符串:「^(\\ d + \\ |)*(\\ d +)$」 – kol
正則表達式在這裏是過度殺傷。只需使用'std :: istringstream',或者用'std :: stoi'自己解析它。 –