字符串匹配——C++使用Regex
需要#include < regex >
输出结果是This is an element and this an unique ID.
匹配
regex_match ("subject", std::regex("(sub)(.*)")
//结果返回true
主要regex_match需要匹配源字符串的每个字符,这点与regex_search不同
查找
返回一个匹配项
const regex pattern("(\\w+day)"); string weekend = "Saturday and Sunday";// the source text smatch result; bool match = regex_search(weekend, result, pattern); if(match){ for(size_t i = 1; i < result.size(); ++i){ cout << result[i] << std::endl; } }
输出结果是Saturday
匹配所有项
const regex pattern("(\\w+day)"); string weekend = "Saturday and Sunday, but some Fridays also."; const sregex_token_iterator end; for (sregex_token_iterator i(weekend.begin(),weekend.end(), pattern); i != end ; ++i){ cout << *i << " "; }
输出结果是Saturday Sunday Friday
替换
string text = "This is a element and this a unique ID."; const regex pattern("(\\ba (a|e|i|u|o))+");// regular expression with two capture groups std::string replace = "an $2"; //$2表示匹配模式串的第二个字串,即以a,e,i,o,u开头的单词 string newtext = regex_replace(text, pattern, replace); cout << newtext << endl;