流上的正则表达式而不是字符串?

发布于 2021-01-29 14:10:58

假设您要在管道上执行正则表达式搜索并提取,但是该模式可能会跨越多行,该怎么做?也许正则表达式库适用于流?

我希望使用Python库完成这项工作吗?但是任何解决方案都可以,当然不是库,而是cmd行工具。

顺便说一句,我知道如何解决我当前的问题,只是寻求一个通用的解决方案。

如果不存在此类库,那么在常规数学算法永远不需要向后扫描的情况下,为什么常规库不能与流一起使用。

关注者
0
被浏览
77
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    如果您寻求一般解决方案,则算法将需要如下所示:

    1. 将流的一部分读取到缓冲区中。
    2. 在缓冲区中搜索正则表达式
    3. 如果模式匹配,则对匹配项做任何想做的事情,丢弃缓冲区的开头直到match.end()第2步。
    4. 如果模式不匹配,请使用流中的更多数据扩展缓冲区

    如果找不到匹配项,最终可能会占用大量内存,但是在一般情况下很难做到更好(考虑.*x在大型文件中尝试将其作为多行正则表达式进行匹配,唯一的x是最后一个字符)。

    如果您了解更多有关正则表达式的信息,则可能还有其他情况可以丢弃部分缓冲区。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看