Python模式匹配
pypama的Python项目详细描述
如何安装
pip install pypama
演示文稿
此包为对象列表提供模式匹配。正如Regex为 字符串,此包为其他类型的列表提供正则表达式。在
一个例子胜过千言万语:假设你有一个清单
>>> example_list = ['a', 'a', 1, '', None, 'b', 'c', 'e']
不知为什么,你知道有一个int和一个None,而你呢 想提取这个数字和None后面的两个字符串吗
^{pr2}$- ^{tt2不匹配的任何整数
- .star(False):相当于正则表达式中的*?:根据需要重复多次
- 括号用于捕获组
- .*是ANY.star()的缩写(匹配任何内容,重复)
因此,上面的模式如下:重复匹配任何不是int的内容, 直到你在第一组中找到一个整数。然后匹配任何东西直到你 找到一个“无”。后面必须跟两个在组2中捕获的元素。在
因此,这与re包非常相似,但应用于列表和 超越了字符串的匹配。在
使用
build_pattern(*args, **functions) 其中args是字符串或Pattern对象的列表,函数将函数名映射到可执行文件。在
- 参数可以是字符串,也可以是包含以下内容的字符串列表:
- <string>:将与其中的字符串匹配<;>
- 如果函数(X)返回True,则可调用函数:X将匹配
- X?:将被忽略或匹配X
- X*:如果X重复匹配,则匹配(贪婪)
- X*?:如果X重复匹配,则匹配(非贪婪)
- (X):将捕获组中的X
- (P<name>X):将在名为“name”的组中捕获X
- X|Y:如果X或Y匹配,则匹配
- \n:将匹配先前匹配的第n个组
- <r:X>:如果单词与regexp X匹配,则匹配
- <re:X>:与<r:X>
- <c:function>或<call:function>:如果函数(X)匹配,则匹配。如果函数在pypama的命名空间中不存在,请在函数调用egbuild_pattern('<c:foo>', foo=lambda x:x<2)will match[1]中添加定义
- .将匹配任何项
- $将在列表末尾匹配if
- X{n}将正好与X匹配n次。n可以是整数的列表
- X!:如果项与X不匹配,则匹配(X必须正好匹配1个元素)
- 两者都是同样有效的,并且计算结果相同;
- build_pattern('<hello>','<world>','.*')
- build_pattern('<hello><world>.*')
- 项目
标签: