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