如果模式“regular”是变量st的子字符串,我想返回输出“match”。这可能吗?
int main()
{
string st = "some regular expressions are Regxyzr";
boost::regex ex("[Rr]egular");
if (boost::regex_match(st, ex))
{
cout << "match" << endl;
}
else
{
cout << "not match" << endl;
}
}
答案 0 :(得分:15)
boost :: regex_match只匹配整个字符串,你可能需要boost :: regex_search。
答案 1 :(得分:7)
答案 2 :(得分:0)
图书馆文档中的示例回答了您的问题 - boost::regex
替代方法:
您可以使用boost :: regex_iterator,这对于解析文件等很有用。
string[0],
string[1]
下面的表示开始和结束迭代器。
例如:
boost::regex_iterator stIter(string[0], string[end], regExpression)
boost::regex_iterator endIter
for (stIter; stIter != endIter; ++stIter)
{
cout << " Whole string " << (*stIter)[0] << endl;
cout << " First sub-group " << (*stIter)[1] << endl;
}
}