對於那些要求,{0}允許選擇由| |分隔的sResult字符串中的任何一個塊。 0是第一個塊C++:正則表達式:返回完整的字符串和不匹配的組
它需要動態爲未來擴展該數字將是由用戶
所以我上一個正則表達式的工作以提取字符串的1個部分配置的,但是同時它匹配結果回報不是預期的。
std::string sResult = "MATCH_ME|BUT|NOT|ANYTHNG|ELSE";
std::regex pattern("^(?:[^|]+[|]){0}([^|;]+)");
std::smatch regMatch;
std::regex_search(sResult, regMatch, pattern);
if(regMatch[1].matched)
{
for(int i = 0; i < regMatch.size(); i++)
{
//SUBMATCH 0 = "MATCH_ME|BUT|NOT|ANYTHNG|ELSE"
//SUBMATCH 1 = "BUT|NOT|ANYTHNG|ELSE"
std::ssub_match sm = regMatch[i];
bValid = strcmp(regMatch[i].str().c_str(), pzPoint->_ptrTarget->_pzTag->szOPCItem);
}
}
出於某種原因,我無法弄清楚代碼即可獲得我只是MATCH_ME回來,所以我可以把它比作在C++側預期的結果列表。
任何人都有我的錯在哪裏有任何想法。
您能否澄清 - 給出一個輸入字符串的例子以及您希望輸出的內容。你在哪裏用「{0}」表示「匹配這個零次數」,你就沒有做任何事情...... – Floris
如果你只是想匹配'MATCH_ME',爲什麼不用一個簡單的'^ [^ |] +'? – jasal
你想用'{0}'量詞來做什麼? – Toto