using System.Collections.Generic;
using System.Text.RegularExpressions;
public static void Main()
string EmailBody = "Moving From Zip 02124 Moving To Zip 02124 First Name Steve Last Name Lazdowsky Email stevelazdowsky@gmail.com Phone (508) 864-7699 Move Size 3+ Bedroom Apartment Date 05/29/2021 If you would like to unsubscribe and stop receiving these emails click here . ";
EmailBody = EmailBody.ToUpper();
EmailBody = EmailBody.Replace("ADDL. INFORMATION", "").Replace("CONTACT INFORMATION","");
List<string> AliasParameter = new List<string>(){
"MOVING FROM", "O.FROM", "CITY", "TOWN", "VILLAGE", "URBANE", "MOVING TO", "D.TO",
"ZIPCODE", "ZIP CODE", "ZIPCOD", "ZIP.CODE",
"AREA CODE", "AREACODE", "POSTCODE",
"MOVE DATE", "APARTMENT DATE",
"COMMENTS", "OBSERVATION", "COMMENTARY", "REMARK",
"FIRST NAME", "LAST NAME", "FULL NAME", "NAME",
"EMAIL", "E-MAIL", "MAIL",
"PHONE", "MOBILE", "CELLULAR", "CONTACT NUMBER",
"PREFERRED TIME", "TIME ZONE", "TIME PREFERRED"
int AliasTotal = AliasParameter.Count;
for(int i=0; i<AliasTotal-1; i++){
FindFields = FindFields + "(" + AliasParameter[i] + ")|";
FindFields = FindFields + "(" + AliasParameter[AliasTotal-1] + ")";
Match matcher = Regex.Match(EmailBody, FindFields);
List<string> ParametersName = new List<string>();
List<string> ParametersValue = new List<string>();
List<int> chunkA = new List<int>();
List<int> chunkB = new List<int>();
while (matcher.Success) {
int charStart = matcher.Index;
int spaceStart = EmailBody.IndexOf(" ", charStart);
int charEnd = spaceStart - charStart;
string ParameterExtracted = EmailBody.Substring(charStart,charEnd);
int ParametrLen = matcher.Value.Length;
int ParametrSrchLen = ParameterExtracted.Length;
int variationChars = ParametrSrchLen - ParametrLen;
if( variationChars <= 2 ){
ParametersName.Add(matcher.Value);
matcher = matcher.NextMatch();
int TotalChunks = chunkA.Count;
Regex frmtZipCde_MveDate = new Regex("([A-z]|:|\\s|\\.)*", RegexOptions.Compiled);
for(int i=0; i<TotalChunks; i++) {
string ParameterName = ParametersName[i];
end = EmailBody.IndexOf(" ", start);
parameterValue = EmailBody.Substring(start, chunkLen);
parameterValue = parameterValue.Replace(":", " ").Replace("="," ");
if ( parameterValue != string.Empty ) {
if( ParameterName == "FIRST NAME" || ParameterName == "LAST NAME" || ParameterName == "FULL NAME" ){
parameterValue = parameterValue.Replace("NAME", "");
} else if ( ParameterName == "MOVING FROM" || ParameterName == "MOVING TO" ) {
Regex frmtMovingFromTo = new Regex("^(\\s|FROM|TO)*", RegexOptions.Compiled);
parameterValue = frmtMovingFromTo.Replace(parameterValue, string.Empty);
} else if ( ParameterName == "ZIPCOD" || ParameterName == "ZIPCODE" || ParameterName == "MOVING FROM ZIP" || ParameterName == "MOVING TO ZIP") {
parameterValue = frmtZipCde_MveDate.Replace(parameterValue, string.Empty);
} else if(ParameterName == "MOVE DATE" || ParameterName == "APARTMENT DATE") {
parameterValue = frmtZipCde_MveDate.Replace(parameterValue, string.Empty);
} else if(ParameterName == "CONTACT NUMBER" || ParameterName == "PHONE") {
parameterValue = frmtZipCde_MveDate.Replace(parameterValue, string.Empty);
} else if(ParameterName == "EMAIL" || ParameterName == "E-MAIL" || ParameterName == "MAIL") {
Regex frmtEmail = new Regex("([A-z]+.?\\w+@\\w+[.]\\w{3}.?(\\w{2})?)");
if ( frmtEmail.IsMatch(parameterValue) != true ) { parameterValue = ""; }
string Value = parameterValue.TrimStart();
if ( Value != string.Empty ) {
Console.WriteLine("{0} = {1}", ParameterName, Value);
ParametersValue.Add( Value );