需要Python正则表达式帮助吗

2024-05-23 18:25:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个.eml文件中寻找一个链接,但不知怎么的,我总能找到它


Tags: 文件链接eml总能
2条回答

对。你是对的。只需从原始文本中删除空白和新行。 例如:

link = re.findall("CONFIRM<([^\s]+)>", raw_email.replace('\n', '').replace(' ', ''))

基本上,您希望获得CONFIRM<>之间的所有内容

  • 通过将原始url中的空格替换为空字符串来删除这些空格
  • (.*?)将捕获CONFIRM<>之间的所有内容
  • 使用.group(1)获取实际捕获的字符串
import re
def get_url(raw):
    raw = raw.replace(' ', '')
    url = re.search('CONFIRM<(.*?)>', raw).group(1)
    return url

对于给定的测试用例

raw_url = 'Please click "CONFIRM" below. CONFIRM<https://app.rule.io/subscriber/optIn?token=3DeyJ0eXAiOiJKV1QiLCJhbG= ciOiJIUzI1NiJ9.eyJzdWIiOjEssswrgTA3OCwic3Vic2NyaWJlckZvcm0iOjExOTAsImlzcyI6= Imh0dHBzOi8vYawetgg1bGUuaW8iLCJpYXQiOjE2MjM1NzkwMDYsImV4cCI6MTYyNDE4MzgwNiw= ibmJmIjoxNjIzNTc5MDA2LCJqdGkiOiJEbHMyeDJmcG5pZEhTWXVjwjwje-52uhXlj9efaEwzfI= Rruoiqc3RvUTZ8LgB6ALEAoL4>'
print(get_url(raw_url))

将输出

https://app.rule.io/subscriber/optIn?token=3DeyJ0eXAiOiJKV1QiLCJhbG=ciOiJIUzI1NiJ9.eyJzdWIiOjEssswrgTA3OCwic3Vic2NyaWJlckZvcm0iOjExOTAsImlzcyI6=Imh0dHBzOi8vYawetgg1bGUuaW8iLCJpYXQiOjE2MjM1NzkwMDYsImV4cCI6MTYyNDE4MzgwNiw=ibmJmIjoxNjIzNTc5MDA2LCJqdGkiOiJEbHMyeDJmcG5pZEhTWXVjwjwje-52uhXlj9efaEwzfI=Rruoiqc3RvUTZ8LgB6ALEAoL4

相关问题 更多 >