lua的lpeg模式匹配库的python端口

PPeg的Python项目详细描述


ppeg是python的模式匹配库,基于 Parsing Expression Grammars(钉)。 它是lua的LPeg库的一个端口。

警告

PPEG仍处于实验阶段。api和语义不稳定。

用法

re模块[1]不同,ppeg模式可以处理平衡序列

>>>from_ppegimportPatternasP>>>pattern=P.Grammar('('+((P(1)-P.Set('()'))|P.Var(0))**0+')')>>>pattern('(foo(bar()baz))').pos15>>>pattern('(foo(bar(baz)').pos-1>>>capture=P.Cap(pattern)>>>capture('(foo(bar()baz))').captures['(foo(bar()baz))']

此示例大致对应于以下lpeg示例

>lpeg=require"lpeg">pattern=lpeg.P{"("*((1-lpeg.S"()")+lpeg.V(1))^0*")"}>pattern:match("(foo(bar()baz))")-- Lua indexes begin at 116>pattern:match("(foo(bar(baz)")nil>capture=lpeg.C(pattern)>capture:match("(foo(bar()baz))")"(foo(bar()baz))"
[1]Some regular expression implementations (e.g. PCRE, regex) support recursive patterns, which can match balanced sequences.

模块

  • cpeg.c
  • 附件C
    • 包括lpeg.c

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

推荐PyPI第三方库


热门话题
java如何在循环链表中找到最大子序列和   java如何将片段制作为应用程序启动活动   java使用单个json,但发布多个AVRO消息   java无法通过URL连接从站点加载内容   java拒绝名称空间仅在文件扩展名(最后一个点后的部分)上不同的WSDL合法吗?   向ArrayList添加图像时java IndexOutofBounds异常   rest CitrusFramework无法通过java运行   java使用枚举构建象限   ubuntu在独立模式下运行Hadoop:bin/Hadoop:line 350:/usr/local/java/jdk1。8.O/bin/java:没有这样的文件或目录   java如何判断getOutputStream或getwriter是在servlet过滤器中调用的   java如何确保覆盖图中的正确绘图顺序?   java部署在WildFly 10中共享JAR文件   java无法使用Swing将数据添加到表中。我该怎么办?   存储基于表单的应用程序数据的java最佳缓存原则   java比较两个连续的hasmap值   java为什么我的背景在重新绘制后会出现问题?   java Gson Android和异步任务   导出html页面时,java图像不会加载到jasper report中   jsf Netbeans:Java阻止在清理项目时删除文件夹   显示Firebase查询的RecyclerView开始处的java插入对象