Python 正则表达式(如果存在)或 Zapier 工作流程中的其他内容

Python regex if present or else in Zapier workflow

我正在使用 zapier 创建自定义工作流程。它需要使用使用 Python 正则表达式的 zapier 格式化程序来解析给定的文本。

我使用的 python 正则表达式是

(?P<action>My-DATA)\s+:desc:(?P<desc>.*):\s+:priority:(?P<priority>.*):\s+:label:(?P<lbl>.*):

针对传入的文本

My-DATA :desc:I would like to get details from https://mydata.org/this-is-my-data: :priority:3: :label:data:

有几件事我不知道该如何实现。每个部分使用 : 分隔,部分名称也包含在 :

有时会发生这样的情况,即输入的文本没有结尾 : 这样的部分 My-DATA :desc:I would like to get details from https://mydata.org/this-is-my-data :priority:3 :label:data

每个部分末尾缺少此文本 :,但每个新部分始终以 : 开头,后跟部分名称。

我正在尝试找出一个正则表达式,无论是否有结尾部分 :

,它仍然可以像这个一样工作

工作正则表达式示例位于 https://regex101.com/r/T2UJcP/2

任何帮助将不胜感激。

您可以在每个部分的末尾添加 :?,这将指示结束冒号是可选的。有无都能匹配到。

(?P<action>My-DATA) :desc:(?P<desc>.+):?\s+:priority:(?P<priority>.+):?\s+:label:(?P<lbl>.+):?

(?P<action>My-DATA)\s+:desc:(?P<desc>.*?):?\s+:priority:(?P<priority>.*?):?\s+:lbl:(?P<lbl>.*?):?\s*$