#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?mx)(?:\s*from\s(?:(?:([^\(\n]*?)\s)|(\[[^\]]*\]))?(?:\((?:(?:((?!HELO|EHLO)[^\s]*)|(?:(?:EHLO)|(?:HELO)))?(?:[\s\w\.]*(?:(?:\[([^\]]*)\])|([^\)\s]*))\))))?(?:\{.*\})?)?" & @CRLF & _
"\s*(?:(?:client\s)?[\(\{\[]+([^\)\}\]]*)[\)\}\]]+\;?(?:\{.*\})?)?" & @CRLF & _
"(?:[\s\n]*)" & @CRLF & _
"(?:\s*(?:by(?:(?:.*?)(?:\;|(?:[\r\n]+))))(?!.*with))?" & @CRLF & _
"(?:\s*(?:by\s[^\;]*\)?)(?=.*with)\s*)?" & @CRLF & _
"(?:with\s*(?:((?:[^\n;]*))(?:.*\;)?))?" & @CRLF & _
"(?:[\s\n]*)?" & @CRLF & _
"(?:\(?envelope-from\s*([^\n]*)\;?\)?)?" & @CRLF & _
"(?:\s*id[^;]*\;?)?" & @CRLF & _
"(?:[\s\n]*)?" & @CRLF & _
"(?:for\s([^\;]*)\;)?" & @CRLF & _
"(?:[\s\n]*)?" & @CRLF & _
"(?:\(.*\)\;)?(?:[\s\n])?" & @CRLF & _
"([^\(]+)?" & @CRLF & _
"(?:\(?envelope-from\s*([^\n]*)\;?\)?)?"
Local $sString = "from qzienfhr ([182.109.196.197]) by mail.oucu.edu.eg" & @CRLF & _
" with SMTP (Code-Crafters Ability Mail Server 2012);" & @CRLF & _
" Mon, 03 Dec 2018 12:42:56 +0200"
Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYFULLMATCH)
; Present the entire match result
_ArrayDisplay($aArray, "Result")
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 AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm