# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"Authentication-results:.+?sender IP.+\R?.+?mailfrom=(.+?);"
test_str = ("Return-path: <JaneSmith@SomeDummyCo.com>\n"
"Received: from ms11p00im-qufv17093501.mac.com ([17.58.36.64])\n"
" by ms24534.mac.com\n"
" (Oracle Communications Messaging Server 8.0.1.3.20170906 64bit (built Sep 6\n"
" 2017)) with ESMTP id <0PE4008Z5RC0PLA0@ms24534.mac.com> for\n"
" JohnDoe@icloud.com; Mon, 27 Aug 2018 17:31:12 +0000 (GMT)\n"
"Original-recipient: rfc822;JohnDoe@icloud.com\n"
"Received: from NAM04-SN1-obe.outbound.protection.outlook.com\n"
" (mail-eopbgr700137.outbound.protection.outlook.com [40.107.70.137])\n"
" by ms11p00im-qufv17093501.me.com\n"
" (Oracle Communications Messaging Server 8.0.2.2.20180531 64bit (built May 31\n"
" 2018)) with ESMTPS id <0PE400K2IRBZ4F00@ms11p00im-qufv17093501.me.com> for\n"
" JohnDoe@icloud.com (ORCPT JohnDoe@icloud.com); Mon,\n"
" 27 Aug 2018 17:31:12 +0000 (GMT)\n"
"X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0\n"
" clxscore=1005 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0\n"
" bulkscore=0 classifier=clx:Deliver adjust=0 reason=mlx scancount=1\n"
" engine=8.0.1-1807170000 definitions=main-1808270184\n"
"X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,,\n"
" definitions=2018-08-27_07:,, signatures=0\n"
"Authentication-results: ms11p00im-qufv10093201.me.com; dmarc=none\n"
" header.from=apoemail.us\n"
"Authentication-results: ms11p00im-qufv10113901.me.com; spf=pass\n"
" (ms11p00im-qufv10113901.me.com: domain of JaneSmith@SomeDummyCo.com designates\n"
" 40.107.70.137 as permitted sender) smtp.mailfrom=JaneSmith@SomeDummyCo.com\n"
"Received-SPF: pass (ms11p00im-qufv10113901.me.com: domain of\n"
" JaneSmith@SomeDummyCo.com designates 40.107.70.137 as permitted sender)\n"
" receiver=ms11p00im-qufv10113901.me.com; client-ip=40.107.70.137;\n"
" helo=NAM04-SN1-obe.outbound.protection.outlook.com;\n"
" envelope-from=JaneSmith@SomeDummyCo.com\n"
"Authentication-results: ms11p00im-qufv17063001.me.com; dkim=pass (1024-bit key)\n"
" header.d=NETORGFT744019.onmicrosoft.com\n"
" header.i=@NETORGFT744019.onmicrosoft.com header.b=fYoFciKN\n"
"DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;\n"
" d=NETORGFT744019.onmicrosoft.com; s=selector1-apoemail-us;\n"
" h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n"
" bh=ZUfrOM+P5LAWsuKD/Lnb58GuE4orISbImwlBF3a/vyc=;\n"
" b=fYoFciKNtylrXwhibBhDmgiw70cFEaUP4XADRpc2cfX3M/4o94Uc7kMGMdo7wj1KqH/d/ShRSn1YX36qzEnW5yA26XIloXj/bt7iZX2LN5boJlI6OaE6DFUIKivm2Cfvl4Q9wckPQRot76ogx/NeYCwfJvD/OgGybwJWjoLQQJo=\n"
"Received: from DM3PR19MB0521.namprd19.prod.outlook.com (10.164.248.145)\n"
" by DM3PR19MB0825.namprd19.prod.outlook.com (10.166.164.151)\n"
" with Microsoft SMTP Server\n"
" (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384)\n"
" id 15.20.1080.14; Mon, 27 Aug 2018 17:31:09 +0000\n"
"Received: from DM3PR19MB0521.namprd19.prod.outlook.com\n"
" ([fe80::69c8:8da3:dc38:8caa]) by DM3PR19MB0521.namprd19.prod.outlook.com\n"
" ([fe80::69c8:8da3:dc38:8caa%5]) with mapi id 15.20.1080.015; Mon,\n"
" 27 Aug 2018 17:31:09 +0000\n"
"From: John Doe <JaneSmith@SomeDummyCo.com>\n"
"To: John Doe <JohnDoe@icloud.com>\n"
"Subject: AutoResponder - Acme Inc - New Client Questionnaire - - Steven\n"
" Plain Text TEST 03/12/1971\n"
"Thread-topic: AutoResponder - Acme Inc - New Client Questionnaire - -\n"
" Steven Plain Text TEST 03/12/1971\n"
"Thread-index: AQHUPiu+8RdF6Tdpg0SO88Zlg/iLzQ==\n"
"Date: Mon, 27 Aug 2018 17:31:09 +0000\n"
"Message-id: <D7A99F58.1E1AA%JaneSmith@SomeDummyCo.com>\n"
"Accept-Language: en-US\n"
"Content-language: en-US\n"
"X-MS-Has-Attach:\n"
"Authentication-results: spf=none (sender IP is )\n"
" smtp.mailfrom=JaneSmith@SomeDummyCo.com;\n"
"X-Originating-IP: [98.195.128.79]\n"
"X-Microsoft-Exchange-Diagnostics:\n")
matches = re.finditer(regex, test_str, re.UNICODE)
for matchNum, match in enumerate(matches, start=1):
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html