提升正则表达式子串匹配

时间:2010-01-14 03:00:20

标签: c++ regex boost

如果模式“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;
  }
}

3 个答案:

答案 0 :(得分:15)

boost :: regex_match只匹配整个字符串,你可能需要boost :: regex_search。

答案 1 :(得分:7)

regex_search做你想做的事; regex_match记录为

  

确定是否给定定期   表达式匹配给定的所有   字符序列

(重点在于我引用的原始网址。)

答案 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;
}

}