我刚刚发现了一个很有前途的库 - http://code.google.com/p/re2,它使用一种长期被忽视的方法 (Thompson NFA) 来实现正则表达式引擎,速度比 awk、Perl 或 Python 中的可用引擎快上几个数量级。
于是我下载了代码并使用了常规的 sudo make install
命令进行安装。 然而,这个操作似乎只是将 /usr/local/include/re2/re2.h
添加到了我的系统中。此外还有一些像 *.a
的文件,但是带有这个 *.a
后缀的文件是什么呢?
我想从 Python (最好是 Python 3.1) 中使用 re2,并很高兴看到发行版中有像 make_unicode_groups.py
这样的文件(也许只在编译过程中使用?)。 但是这些文件没有在我的计算机上部署。
如何从 Python 中使用 re2?
更新 有两位友善的人指出我可以尝试从源代码构建 DLL / *.so 文件,然后使用 Python 的 ctypes
库访问这些文件。有没有人可以给出有用的指针如何做到这一点? 我对此毫无头绪,尤其是对于第一部分(构建 *.so 文件)。
更新:我之前也在re2开发者组发布了这个问题,但至今没有得到回复(这是一个小组),今天我又发布到(规模稍微大一些的)comp.lang.py组中[—链接在此—]。希望来自各方面的人们能够联系到彼此。我猜一个有技能的人可以在他们20%的空闲时间内用几个小时完成这个任务,而这对我来说要花费几周的时间。是否有工具可以将C++自动转换为Python所需的任何C语言风格?然后,也许将获得可行的结果减少到巧妙的工具链接。
(牢骚)为什么这么难?想想在2010年我们仍然不能让我们丰富的软件片段相互通信。每当你想要从Python调用一些C代码时,你必须总是添加这些链接部分。这需要很多工作,但只提供一个特定于C代码版本和Python版本的扩展模块,因此它会很快过时。(/牢骚)是否有可能在单独的进程中运行这些东西(例如,如果我有一个re2可执行文件,可以为到达的数据生成结果,比如说subprocess/Popen/communicate()
)?(这不应该是一个纯命令行工具,每次需要用到它都必须打开一个进程,而是一个连续运行的单个进程;也许存在一些包装器,可以使这样的C代码“守护”)。