多缓冲区上的c++正则表达式
C++ Regular expression on multiple buffers
我有一个问题与regex,我希望它计数多个(好吧,在这种情况下,一个)缓冲区作为一个字符串。
假设我下载了一个文件,我想搜索一个特定的字符串,比如"foobar"。我不知道文件的大小,我不想为html代码分配一大块几兆字节的缓冲区。
这个想法是,我有一个小缓冲区,假设64字节。假设我们写入该文件的一部分字符数组看起来像这样
.............foobar.............
一切看起来都很好,但是如果数组是这样的
.............................foo
在另一个写块时它变成
bar.............................
这个问题不言自明。Regex不会在单独的检查中找到字符串。我们可以分配大的缓冲区大小来一次包含页面,但这是一个巨大的浪费。
所以,我有一个想法-分割缓冲区。比如第一次写入时我们得到这些缓冲区
............................foo
------------------------------- // this one is empty
然后,第二次写入后,我们得到这个
............................foo
bar............................
现在,如果有一个正则表达式函数可以把这些缓冲区算作一个缓冲区,那就太好了。我可以简单地保持缓冲区的交替,拉出我想要的字符串,而不需要在ram中分配大量空间。
是否有c++正则表达式库可以做到这一点?什么好主意吗?
std::regex_match
(从c++ 11开始可用,参见标题<regex>
)有一个接口,它接受一对迭代器来分隔要搜索的"字符串"。您可以创建自己的迭代器类,它将简单地按顺序迭代缓冲区集合。
每次更换缓冲区后,您都可以将缓冲区连接到临时缓冲区中,然后使用正则表达式进行搜索。ie。
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++正则表达式无限循环
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 带有多个字符分隔符的正则表达式
- C++ 使用增强正则表达式库时断言崩溃
- 有人可以帮助我处理正则表达式吗?
- 使用正则表达式获取大括号块的列表
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 组合正则表达式部分使用 | 不起作用的 C++
- 为什么C++正则表达式这么慢?
- 如何使HTML5电子邮件验证正则表达式在C++中工作?
- 在C++中实现正则表达式
- C++正则表达式替换整个单词
- 用C++编写正则表达式的正确方法是什么?
- 如何从Stroustrup的C++书中解释这个正则表达式?
- 为什么这个正则表达式C++在括号表达式中抛出无效范围异常?
- C++:匹配正则表达式,什么是匹配?
- C++:正则表达式匹配代码,打印多个匹配项?