我使用的是提振以下功能:: TR1 :: sregex_token_iterator升壓正則表達式記號迭代:括號內獲得輸入
int regexMultiple(std::string **s, std::string r)
{
std::tr1::regex term=(std::tr1::regex)r;
const std::tr1::sregex_token_iterator end;
int nCountOcurrences;
std::string sTemp=**s;
for (std::tr1::sregex_token_iterator i(sTemp.begin(),sTemp.end(), term); i != end; ++i)
{
(*s)[nCountOcurrences]=*i;
nCountOcurrences++;
}
return nCountOcurrences;
}
正如你所想,**s
是一個指向字符串,r是有問題的正則表達式。此功能有效(實際上,這一可能不起作用,因爲我修改它從原來只是爲了使它更簡單,因爲其餘與問題無關)。
我想知道的是,給出例如什麼,這樣的正則表達式:"Email: (.*?) Phone:..."
,有什麼辦法只檢索部分來自它,或者我應該申請子在(*?)給出的結果來實現這個呢?
否則,它會拋出:電子郵件:[email protected]電話:..
感謝。
爲什麼不直接使用'regex_search'?你可以把所有的捕獲組以一個很好的包返回給你。或者你想要任意多個捕獲組?此外,'** s'不是一個指向字符串的指針,它是一個字符串(而's'是一個指向字符串的指針) - 爲什麼不使用引用? –
看起來我一直在做錯誤的方式,對吧?我會研究這個功能。謝謝。 – Filgera
我認爲這應該有一個簡單的解決方案,讓我重讀你的問題。我不完全確定你想要做什麼。 –