1

有没有办法使用 boost 的正则表达式类在文件中搜索而不将其完全读入内存?

我目前每行读取一个文件,与通过正则表达式搜索相比,这使得解析非常复杂。我每行都这样做,因为文件可能很大,我不想浪费太多 RAM。

我想使用的正则表达式是,如果我将它用于记事本++中的示例,它可以正常工作

Block *\{([^\}]*?)MY_TOOL_Library([^\}]*?)\}
4

1 回答 1

2

我不认为 boost regex 实现了这一点。它们需要一个双向迭代器。

形式上,“正则表达式”(在数学意义上)允许一次解析,并且可以使用前向迭代器。但是 boost 与大多数其他正则表达式一样,实现了捕获(对正式定义的扩展),我认为这排除了真正的一次性算法(或使其极其困难)。

于 2012-08-10T07:55:19.750 回答