Python 需要正则表达式帮助,多行正则表达式

Python regular expression help needed, multiple lines regex

如何解码 .eml 并获得令牌

首先,.eml 编码在 MIME quoted-printable 中(提示是行尾的 = 符号。你应该先解码它,而不是处理编码的 raw 文本。

其次,正则表达式有点矫枉过正。一些不错的 string.split() 用法也能正常工作。正则表达式在其正确的使用场景中非常有用,但一些简单的 python 通常可以做同样的事情而不必使用正则表达式的魔法风格,这可能会像 [已编辑].

一样令人困惑。

请注意,如果您正在构建正则表达式,始终建议您使用众多正则表达式编辑器之一,因为它们将帮助您构建正则表达式...我个人最喜欢的是 regex101

编辑:添加了正则表达式方法。

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]

谢谢你的解释,对我很有帮助!