问题标签 [re2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 是否可以从 Python 中使用 re2?
我刚刚发现了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 代码的包装器)。
c++ - 基于自动机的 re2 替代方案
我需要在我正在编写的 C++ 程序中实现正则表达式,我想使用 re2 但我无法在 Windows 上编译它。有谁知道另一个正则表达式库或任何可以在 Windows 上轻松编译的正则表达式库,并且不是“回溯”正则表达式引擎,而是像 re2 这样的基于自动机理论的引擎(无论这意味着什么)?
或者只是弄清楚如何在 Windows 上编译 re2 将是完美的。
regex - 我在哪里可以下载 RE2?
我正在做一个使用.net,C++,需要正则表达式的项目,我不想自己写一个正则表达式引擎,除了性能对我来说非常重要,我发现谷歌的RE2几乎是最快的,但我无法打开“code.google.com/p/re2/” :(你能告诉我在哪里可以下载它吗?我正在搜索,但所有参考都将我发回“code.google.com/” p/re2/".TNX
c++ - Google re2 namedcapture,如何在 C++ 中解析结果?
使用 google re2 库进行正则表达式我还没有找到一种方法来解析结果,任何地方!
这是一个简短的例子
我必须做什么才能知道只有 flickr 被匹配?
谢谢你,
弗朗切斯科
--- 经过更多测试后,我没有找到命名捕获的解决方案,我发现工作的唯一方法是给我提取的文本,就是这样。
-------- 这会给我输出:
发现 res = 1 arg[0] = 你好。疯狂的世界 arg[1] = 你好。arg[2] = 疯狂 arg[3] = 世界 arg[4] =
用字符串匹配的第二部分进行测试...
---我得到输出:
foudn res = 1 arg[0] = arg[1] = arg[2] = arg[3] = arg[4] = world
我的问题是名称捕获-> a <--- 永远不会出现,并且应该清除输出(在不敏感匹配的情况下小写,从添加的兼容字符中删除,..)并再次针对地图进行处理,因为我不'没有命名的捕获,它给了我密钥而不是这个 preg 的值
c++ - 如何为 Windows 构建 Google RE2?
如何为 Windows 构建 Google RE2?有人试过吗?
ruby - RE2 正则表达式中如何使用命名捕获组?
在此页面http://swtch.com/~rsc/regexp/regexp3.html上,它说 RE2 支持命名表达式。
RE2 支持 Python 风格的命名捕获
(?P<name>expr)
,但不支持 .NET 和 Perl 使用的替代(?<name>expr)
语法(?'name'expr)
。
但我无法使用名称访问匹配项,因此这似乎是一个无用的实现。我错过了什么吗?
java - 是否存在类似 RE2 的 Java 正则表达式库?
有没有人遇到过 Google 的正则表达式库 RE2 的 Java 版本或具有类似功能和良好性能的 Java 库?性能要求是关于正则表达式长度和输入文本长度的线性时间。
澄清
大多数正则表达式实现使用回溯算法来匹配输入文本,因此在一些简单的正则表达式(如(.*).(.*).(.*).(.*)
. RE2 是 google 的一个库,它通过使用自动机理论概念随输入大小线性变化的算法来解决这个问题。提问者想知道是否存在基于此算法的 Java 库。
regex - 对于 Google re2 库,longest_match 是什么意思?
我不知道最长的匹配选项在谷歌的 re2 库中做了什么。
不正确的解释:
当应用于
/a*/
时"aaaaa"
,设置最长匹配会使 Kleene 闭包变得贪婪,以便正则表达式匹配整个字符串"aaaaa"
而不是空字符串""
。当应用于
/a*/
时"abaa"
,设置最长匹配使正则表达式匹配最长的匹配"aa"
(从索引 2 开始)而不是最左边的匹配"a"
(从索引 0 开始)
我无法在互联网上找到任何讨论这个问题的人,这表明我是唯一一个感到困惑的人。谁能帮我吗?
c++ - re2 库加载
我正在使用以下代码来测试 google 的 RE2 库
我正在使用以下命令进行编译 -
它编译得很好,但是当我尝试使用 ./retest 运行重新测试时,它会抛出以下错误 -
我已经检查并且 libre2.so.0 库确实存在于 user/local/lib 目录和 re2/obj/so 目录中。那么为什么会出现这个错误,我忘记添加一些细节?
c++ - C++ 中的复杂 const 声明
我第一次涉足 C++,特别是 Google RE2 库,但我被一些语法困住了。我正在尝试使用签名调用函数:
使用代码:
但是我收到编译器错误:
我显然把第三个参数的数据类型弄错了,但是有人知道正确的数据类型是什么吗?
我正在使用 Visual Studio 2010 编译代码