boost :: regex提取搜索词

时间:2013-09-10 12:12:52

标签: c++ regex boost boost-regex

如何在C ++中使用boost :: regex提取搜索词,尤其是当术语中包含html实体时。

例如

p=test&test&sort=price
Search Term would be 'test&test'

p=test&test&sort=price
Search Term would be 'test&test'

Boost Regex代码如下

bool regexExtract(const string &strInput,string &strOutput,const string& regex)
{
  bool succ = false;
  if ( ! strOutput.empty() )
  {
    boost::regex re(regex, boost::regex::perl);//,boost::regex::perl | boost:regex::icase);
    boost::sregex_iterator res(strInput.begin(),strInput.end(),re);
    boost::sregex_iterator end;
    for (; res != end; ++res)
        cout << (*res)[0] << std::endl;
  }
  return succ;
}

正则表达式string re = "p=(([^&;#]|(&.*?;))*).*";打印在

之下
p=test&amp;test&sort=asc

虽然perl中的相同正则表达式完全正常

echo "p=test&asd;test&sort=asc" | perl -ne 'if ( $_ =~ /p=(([^\&;#]|(&.*?;))*).*/){print $1;}'
test&asd;test

0 个答案:

没有答案