gpt4 book ai didi

regex - 高效(基本)正则表达式实现流数据

转载 作者:行者123 更新时间:2023-12-04 07:56:28 24 4
gpt4 key购买 nike

我正在寻找对数据流进行操作的正则表达式匹配的实现-即,它具有一个API,该API允许用户一次传递一个字符并在字符流上找到匹配项时报告到目前为止看过。只需要非常基本的(经典)正则表达式,因此基于DFA/NFA的实现似乎很适合该问题。

基于可以在单个线性扫描中使用DFA/NFA进行正则表达式匹配的事实,看来流式实现应该是可能的。

要求:

  • 在执行匹配之前,库不应该尝试等待读取完整的字符串。我真正拥有的数据正在流式传输;无法知道将要到达多少数据,因此无法向前或向后搜索。
  • 不能为几种特殊情况实现特定的流匹配,因为我事先不知道用户可能想要寻找哪种模式。
  • 语言:可用于C/C++

  • 出于好奇,我的用例如下:我有一个系统可以在完整的系统仿真器中拦截内存写操作,并且我想有一种方法来标识与正则表达式匹配的内存写操作(例如,可以使用它来找到系统中将URL写入内存的位置)。

    我已经发现:

    Apply a Regex on Stream?

    Applying a regular expression to a Java I/O Stream

    Code Guru - Building a Regular Expression Stream Search with the .NET Framework

    但是所有这些尝试首先将流转换为字符串,然后再使用常规正则表达式库。

    我的另一种想法是修改 RE2 library,但是 according to the author围绕整个字符串同时在内存中的假设进行构造。

    如果没有任何可用的东西,那么我可以重新设计轮子以适应自己的需求,这很不愉快,但是我宁愿不做,如果我能避免的话。任何帮助将不胜感激!

    最佳答案

    我正是您要寻找的东西:https://github.com/agentzh/sregex
    http://agentzh.org/misc/slides/yapc-na-2013-sregex.pdf

    而且,如果您知道javascript(或想要javascript版本),我将提供一个练习,使您可以使用现有的RE实现轻松地做到这一点:https://github.com/dhruvbird/regexp-js

    关于regex - 高效(基本)正则表达式实现流数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12851837/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com