Что было бы хорошим регулярным выражением для определения префикса «оригинального сообщения» в gmail? - PullRequest
2 голосов
/ 20 марта 2012

Пример подписи может быть:

On Tue, Mar 20, 2012 at 2:38 PM, Johnny Walker <johnny.talker@gmail.com> wrote:

А затем следует за цитируемым ответом. У меня есть дискретное ощущение, что это зависит от конкретной локали, что делает меня грустным программистом.

Причина, по которой я спрашиваю об этом, заключается в том, что roundup неправильно отбрасывает их при ответе через gmail на проблему. И я думаю, origmsg_re - это переменная config.ini, которую мне нужно установить вместе с keep_quoted_text = no, чтобы это исправить.

Сейчас это по умолчанию origmsg_re = ^[>|\s]*-----\s?Original Message\s?-----$

Редактировать: Теперь я использую origmsg_re = ^On[^<]+<.+@.+>[ \n]wrote:[\n], который работает с некоторыми клиентами Gmail, которые разбивают слишком длинные строки.

1 Ответ

1 голос
/ 20 марта 2012

Следующее регулярное выражение будет соответствовать префиксу gmail довольно безопасным способом.Это гарантирует, что есть 3 запятых и литр текста On ... wrote

On([^,]+,){3}.*?wrote:

Если регулярное выражение должно совпадать в регистре без учета регистра, не забудьте добавить модификатор.

if re.search("On([^,]+,){3}.*?wrote:", subject, re.IGNORECASE):
    # Successful match
else:
    # Match attempt failed

С уважением, Бакли

Match the characters “On” literally «On»
Match the regular expression below and capture its match into backreference number 1 «([^,]+,){3}»
   Exactly 3 times «{3}»
   Note: You repeated the capturing group itself.  The group will capture only the last iteration.  Put a capturing group around the repeated group to capture all iterations. «{3}»
   Match any character that is NOT a “,” «[^,]+»
      Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
   Match the character “,” literally «,»
Match any single character that is not a line break character «.*?»
   Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?»
Match the characters “wrote:” literally «wrote:»

Created with RegexBuddy
...