[Python]流式模式匹配?

[Python]流式模式匹配? - RussellLuo - 博客园

[Python]流式模式匹配?

      这两天在用Python处理文本,要用正则表达式去匹配大文件数据,然而:被匹配的数据可能位于一行,也可能分布在多行,因此不能简单使用readline();而且也不知道被匹配的数据从哪里开始?长度是多少?

      由于re模块的正则匹配是针对已知文本的,这样一来就需要事先获取整个文件中的文本,再使用正则表达式进行匹配。

      google了一把,发现Python内置的mmap模块可以解决这个问题,于是随笔记录下了(参见[Python]re+mmap实现大文件的正则匹配)。

      与此同时,无意中看到了《流数据多模式正则表达式》这篇文章,其中提到了“流式模式匹配”的概念,摘录如下:

      正则表达式是一种强大的工具,当我们进行文本信息的分析和处理时通常都会用到,C++、JAVA、C#等语言都拥有各自的正则表达式库,而有些语言如Perl甚至内嵌了模式匹配。但是当我们在处理流数据时,上述的正则表达式使用起来并不顺手。因为通常的正则表达式用于搜索一个已知的文本数据,而流数据通常具有不可预知的特性,如:具体内容、长度等。另外在处理大文本时,流式模式匹配也能大大简化程序,如不必将所有文本都读入能内存、不用考虑一次读取多少文本,本次读取的文本是否正好跨越可能匹配的部分文本段,导致必须重复搜索之前的已搜索过的能容等。

      忽然感觉“流式模式匹配”的概念是非常灵活和强大的,用它来解决我遇到的问题也应该是非常好的方案。于是继续google,结果好像没有发现Python中有相关的概念和应用,有点小遗憾。

      在此做个记录,以备后续参考。有时间了一定要深入了解下“流式模式匹配”的原理和应用,最后能够用Python实现出来就再好不过了:)

原文地址:https://www.cnblogs.com/lexus/p/2758616.html