Регулярное выражение Python, если оно присутствует или еще в рабочем процессе Zapier

#python #regex #regex-group #zapier

#python #регулярное выражение #регулярное выражение-группа #zapier

Вопрос:

Я работаю над созданием пользовательского рабочего процесса с использованием zapier. Требуется проанализировать данный текст с помощью zapier formatter, который использует регулярное выражение Python.

Регулярное выражение 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

Любая помощь будет оценена.

Ответ №1:

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

Ответ №2:

Вы можете добавить :? в конец каждого раздела, который будет указывать, что конечное двоеточие необязательно. Оно может соответствовать ему, есть оно там или нет.

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

Комментарии:

1. Я пробовал это, но происходит то, что : становится частью текста раздела. Проверьте это. Пожалуйста, проверьте это regex101.com/r/T2UJcP/4

2. Как насчет использования * , которое может быть 0 или более? regex101.com/r/T2UJcP/5