Требуется справка по регулярному выражению Python, регулярное выражение из нескольких строк

#python #html #css #regex #re

Вопрос:

как расшифровать .eml и получить токен

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

1. Я отредактировал свой ответ, чтобы включить способ регулярного выражения для этого…

Ответ №1:

Во-первых, .eml кодируется в MIME quoted-printable (подсказка-это = знаки в конце строки. Сначала вы должны расшифровать это, вместо того, чтобы иметь дело с закодированным необработанным текстом.

Во-вторых, регулярное выражение-это перебор. Некоторое хорошее string.split() использование будет работать так же хорошо. Регулярное выражение чрезвычайно полезно в сценариях правильного использования, но некоторые простые python обычно могут делать то же самое без необходимости использовать магию регулярных выражений, что может сбивать с толку, как [ОТРЕДАКТИРОВАНО].

Обратите внимание, что если вы создаете регулярное выражение, всегда рекомендуется использовать один из редакторов регулярных выражений gazillion, так как они помогут вам создать регулярное выражение… Мой личный фаворит-регулярное выражение 101

ИЗМЕНИТЬ: добавлен способ регулярного выражения для этого.

 import quopri
import re


def get_url_by_regex(raw):
    decoded = quopri.decodestring(raw).decode("utf-8") 
    return re.search('(<a href=")(.*?)(")', decoded).group(2)


def get_url(raw):
    decoded = quopri.decodestring(raw).decode("utf-8") 
    for line in decoded.split('n'):
        if 'token=' in line:
            return line.split('<a href="')[1].split('"')[0]
    return None  # just in case this is needed


print(get_url(raw_email))
print(get_url_by_regex(raw_email))
 

результат таков:

 https://app.rule.io/subscriber/optIn?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzd[REST_OF_TOKEN_REDACTED]
https://app.rule.io/subscriber/optIn?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzd[REST_OF_TOKEN_REDACTED]
 

Ответ №2:

спасибо за хорошее объяснение, это действительно помогло мне!