2016-04-27 28 views
-1

有一個字符串(來自stdin的輸入)說inputString如何在C++中使用正則表達式中的變量?

我想要做的是匹配一些正則表達式,包括這個變量字符串的一部分。例如,如果輸入字符串是stackoverflow,我想匹配stackoverflo[a-z]或說stack[a-z]overflow(即前5個字符,某些單個字符和其餘輸入)

我該如何做?我想可能我需要在運行時生成另一個字符串,但不知道我會如何做到這一點。

+0

_exactly_你想要什麼?你想建立一個正則表達式來匹配'inputString'的_any_部分還是特定的一個? – hyst329

+0

看看['std :: string'](http://en.cppreference.com/w/cpp/string/basic_string)和['std :: stringstream'](http://en.cppreference .com/w/cpp/io/basic_stringstream)爲您提供子字符串提取和字符串創建。如果你遇到困難,請回到SO。 – StoryTeller

+0

@ hyst329字符串的特定部分 –

回答

3

你只需要使用普通std::stringinserterasesubstr,串聯....

std::string regex_string = inputString.substr(0, inputString.size() - 1) + "[a-z]"; 
... 
string regex_string = inputString; 
regex_string.insert(5, "[a-z]"); 

你必須決定如何制定出指數在要複製,刪除或插入。

一旦你有你想要的regex_string,只需將其提供給regex庫函數...

std::regex re(regex_string); 
std::smatch match; 
if (std::regex_search(my_string_to_match_against, match, re)) ... 
相關問題