我刚刚发现了http://code.google.com/p/re2,这是一个很有前途的库,它使用一种长期被忽视的方式 ( Thompson NFA ) 来实现一个正则表达式引擎,它可以比 awk 的可用引擎快几个数量级、Perl 或 Python。
所以我下载了代码并做了通常sudo make install
的事情。然而,这个动作似乎只是增加/usr/local/include/re2/re2.h
了我的系统。似乎还有一些*.a
文件,但是这个*.a
扩展名是什么?
我想使用 Python 中的 re2(最好是 Python 3.1),并且很高兴看到make_unicode_groups.py
发行版中的文件(可能只是在构建过程中使用?)。然而,那些并没有部署在我的机器上。
我如何使用 Python 中的 re2?
更新两个友好的人指出,我可以尝试从源代码构建 DLLs / *.so 文件,然后使用 Python 的ctypes
库来访问这些文件。谁能提供有用的指示如何做到这一点?我在这里几乎一无所知,尤其是第一部分(构建 *.so 文件)。
更新我也将这个问题(较早)发布到re2 开发者组,直到现在(它是一个小组)没有回复,今天到(人口更多)comp.lang.py组[-thread here-] . 希望各个角落的人可以互相联系。我的猜测是一个熟练的人可以在他们的 20% your-free-time-belongs-google-too 时间片内的几个小时内做到这一点;它会束缚我好几个星期。是否有一种工具可以自动将 C++ 简化为 Python 需要能够连接的任何 C 风格?那么也许得到一个可行的结果可以简化为聪明的工具链。
(咆哮)为什么这么难?想想2010年我们还是不能让我们丰富的软件互相交流。这是一个如此大的障碍,以至于无论何时你想从 Python 中处理一些 C 代码,你都必须总是处理这些链接位。这需要大量工作,但只提供了一个特定于 C 代码版本和 Python 版本的扩展模块,因此它老化得很快。(/rant) 是否可以在单独的进程中运行这些东西(假设我是否有一个 re2 可执行文件,它可以为传入的数据生成结果,比如subprocess/Popen/communicate()
)?(这不应该是一个纯粹的命令行工具,每次需要时都需要打开一个进程,而是一个连续运行的单个进程;也许存在某种“妖魔化”此类 C 代码的包装器)。