regex – 流数据的高效(基本)正则表达式实现
我正在寻找一个对数据流进行操作的正则表达式匹配的实现 – 也就是说,它有一个API,允许用户一次传入一个字符并报告何时在字符流上找到匹配项到目前为止看到了只需要非常基本的(经典)正则表达式,因此基于DFA / NFA的实现似乎非常适合该问题.
基于在单个线性扫描中使用DFA / NFA进行正则表达式匹配的事实,似乎应该可以实现流式实现. 要求: >在执行匹配之前,库不应该等到读完整个字符串.我的数据确实是流媒体;没有办法知道有多少数据会到达,无法向前或向后搜索. 对于好奇,我的用例如下:我有一个系统拦截完整系统仿真器内的内存写入,我想有一种方法来识别与正则表达式匹配的内存写入(例如,可以使用它来找到系统中将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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |