【发布时间】:2014-07-28 09:07:05
【问题描述】:
我有一个回调函数,它提供指向数据及其大小的指针。我不知道下一次是什么尺寸,最后一次是哪个电话。我需要用正则表达式匹配传入的数据并保存匹配项。 类似的东西。
class data_filter
{
public:
data_filter(const std::string& re)
: re_(re)
{}
public:
// callback func. It will be called many times with data parts
void process(const char* data, const size_t len)
{
re_.match(data, len, m_); // if found match, add it to matches
}
public:
void print_matches()
{
for(size_t i = 0; i < m_.size(); ++i)
{
std::cout << m_[i] << std::endl;
}
}
private:
some_cool_regex re_;
cool_regex_matches m_;
};
如果绝对必要,我可以为正则表达式回溯提供一些固定缓冲区,但我想避免它。
我已经用partial_match 选项简要了解了boost::regex。据我第一眼了解它可以提供这样的功能,但用户应该手动处理临时缓冲区。
那么,我应该坚持使用 boost 还是有一些库更符合我的需求? 谢谢。
【问题讨论】:
标签: c++ regex search boost streaming