对象的正则表达式

REfO的Python项目详细描述


由于没有一个合适的名称,refo代表“对象的正则表达式”。

它是一个python库,提供了与python非常相似的功能 re模块(正则表达式),但用于对象的任意序列 而不是字符串(字符序列)。

除此之外,还可以将序列中的每个对象与 不仅是相等,而且是任意的python函数。 例如,如果有一个整数序列,则可以将 要求偶数后跟质数的表达式 后跟一个3可除数。

这个软件是由Rafael Carrascosa在Machinalis工作时编写的。 2012年的头几个月。

联系人:rcarrascosa@machinalis.com 或rafacarrascosa xyz gmail.com(将“xyz”替换为“@”)

如何使用

语法与python的re略有不同,与 pyparsing,您必须或多或少地显式地构建 你的正则表达式。例如:

“a b”文字(“a”)+文字(“b”)

“a*”星(文字(“a”))

“(ab)+(bb)*?“是:

a = Literal(“a”) b = Literal(“b”) regex = Plus(a + b) | Star(b + b, greedy=False)

您还可以将组分配给任何子匹配项,然后在检索匹配项时 内容,例如:

regex = Group(Plus(a + b), “foobar”) | (b + b) m = match(regex, “abab”) print m.span(“foobar”) # prints (0, 4)

有关更多信息,请查看examples文件夹中的示例。

我们如何使用它

在Machinalis,我们将REF用于类似于 examples/words.py,看看吧!

关于实现

我使用类似汤普森的虚拟机aproach,它确保多项式时间 最坏情况的复杂性。有关此示例,请参见examples/poly_time.py

该实现主要基于russ cox注释,请参见 http://swtch.com/~rsc/regexp/regexp2.html用于源。

如果要阅读代码,请使用一些词汇表:

  • RE – regular expression
  • VM – virtual machine
  • Epsilon transitions – All VM instructions that do not consume a symbol
    or stop the thread (for example an Accept).

致谢

感谢Russ Cox在您的网站上分享了这些令人惊叹的信息和见解。

感谢javier mansilla审阅代码并对此充满热情。

感谢Machinalis提供的一切:)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从room数据库读取所有值并显示到recyclerview中?   java如何在不使用索引器(lucene)和google自定义搜索的情况下创建自定义搜索框   java我需要帮忙整理扑克牌   java无法从手机内部存储器的数据文件夹或文档文件夹中读取文本文件   安卓如何用java代码编写此xml   使用service builder类更新java blob数据失败   java无法检测adb版本,退出值:0xc0000135   java变量不保存当前列表大小   WAMPSERVER中用户“root”@“localhost”(使用密码:YES)的java访问被拒绝   java Springboot Jsp不适用于2.0.2版。释放   io如何强制java OutputStreamWriter实际写入单个字节?   大型文本文件中的java字符串匹配问题   java Guice注入空检查?   java Flink WordCount,什么时候是求和计算,源代码在哪里?   java矩阵中的最小拆分数   java如何在其适配器函数中重新绘制可扩展列表?   java如何将EAR远程部署到JBoss 5.1.0。GA使用Cargo maven插件?