Я пытаюсь соответствовать регулярное выражение, которое разбирает ответ .....Регулярное выражение не соответствует re.match
error code|error text|submission reference
2|missing or invalid fields|0
он использует re.match(self.error_format)
Я попытался error_format как:
(?P<status_code>[0-9]+)|(?P<status_message>.+)|(?P<gateway_message_id>[a-zA-Z0-9-]+)
но это соответствует строке error code|error text|submission reference
не вторая строка по мере необходимости.
также попытался:
(?P<status_code>[0-9]+)\|(?P<status_message>.+)\|(?P<gateway_message_id>[a-zA-Z0-9-]+)
, но это не соответствует вообще.
Update:
То, что я хочу сделать, это матч только 2 | отсутствует или недействительные поля | 0, но полный текст код ошибки | текст ошибки | ссылки на подчинение 2 | отсутствует или недействительные поля | 0 так как будто мне нужно пропустить первую часть.
т.е.
msg = re.match('(?P<status_code>[0-9]+)\|(?P<status_message>.+)\|(?P<gateway_message_id>[a-zA-Z0-9-]+)', 'error code|error text|submission reference 2|missing or invalid fields|0')
Я думаю, что главное, что висит вас (и, возможно, другие тоже), что 'match' только найти вещи прямо в начале текста разыскивается. Вам нужно использовать 'search', если то, что вы ищете, возможно, не в начале. –
Хорошо, если бы ОП разделил линии и выполнил повторную линию, он бы работал так же хорошо, как и re.search. В противном случае re.finditer должен сделать трюк (я бы предположил, что в реальном файле журнала будет более одной соответствующей строки). –