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>.*')

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

推荐PyPI第三方库


热门话题
java使用Jackson解析非同构JSON对象数组   java为什么'Stream<T>::<A>toArray(IntFunction<A[]>)`接受没有绑定的类型参数A?   java在JavaFX2.0中获取给定布局中的节点大小?   java双链接列表创建节点   java使用HashMap添加、删除和查找   java中push_back(C++)的等效方法是什么?   java在Jetty中运行servlet时获得HTTP 500   用java显示包含图像和文本的页面的最简单文档格式   swing从选项卡窗格Java中的不同选项卡访问数据   字符串Java帮助检查登录类使用。CSV文件   java Struts 1.2.9动作链接   包含max元素的java列表   currentNode上的jcr Java空检查   在Android中使用OpenNLP的POSTaggerMe时出现java NullPointerException   java Logback只将消息记录到syslog一次   如何用Java编写构造函数的API文档   java从gallery中获取所有图像并存储在阵列中   java Maven:将外部jar文件夹添加到类路径