public Patterning(List<string> t) { patterns = new Dictionary<string, string>(); results = new Dictionary<string, string>(); text = t; this.FillPatterns(); this.InitiateResults(); }
public Dictionary<string, string> IterateSection(string sectionName, string s) { List<string> lines = Patterning.RemoveEmpltyLines(s); string copy = s; Dictionary<string,string> result=new Dictionary<string,string>(); switch(sectionName) { case("nabywca"): // Dictionary<string, string> nabywca = new Dictionary<string, string>(); foreach(string str in lines) { foreach (Match m in Regex.Matches(str, patterns["kod pocztowy"], System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { string temp = str; if (!result.ContainsKey("kod pocztowy")) result.Add("kod pocztowy", m.Value.ToString()); else { temp = Regex.Replace(temp, result["kod pocztowy"], ""); result["kod pocztowy"] += "|" + m.Value.ToString(); } temp = Regex.Replace(temp, result["kod pocztowy"], ""); temp = Regex.Replace(temp, ":", ""); temp = Regex.Replace(temp, " ", ""); if (!result.ContainsKey("miejscowosc")) result.Add("miejscowosc", temp); else { result["miejscowosc"] += "|" + temp; } // MessageBox.Show(result["miejscowosc"]); copy = Regex.Replace(copy, result["miejscowosc"], ""); copy = Regex.Replace(copy, result["kod pocztowy"], ""); } foreach (Match m in Regex.Matches(str, patterns["NIP"], System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { if (!result.ContainsKey("NIP")) result.Add("NIP", m.Value.ToString()); else result["NIP"] += "|" + m.Value.ToString(); copy = Regex.Replace(copy, result["NIP"], ""); } foreach (Match m in Regex.Matches(str, "sprzedawca.*", System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { string temp = m.Value.ToString(); //MessageBox.Show(temp); temp = Regex.Replace(temp, "sprzedawca", "", RegexOptions.IgnoreCase); temp = Regex.Replace(temp, ":", ""); if (!result.ContainsKey("nazwa")) result.Add("nazwa",temp); else result["nazwa"] += "|" + temp; copy = Regex.Replace(copy, result["nazwa"], ""); } foreach (Match m in Regex.Matches(str, "nabywca.*", System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { string temp = m.Value.ToString(); // MessageBox.Show(temp); temp = Regex.Replace(temp, "nabywca", "",RegexOptions.IgnoreCase); temp = Regex.Replace(temp, ":", ""); temp = Regex.Replace(temp, "^ ", ""); if (!result.ContainsKey("nazwa")) result.Add("nazwa", temp); else result["nazwa"] += "|" + temp; copy = Regex.Replace(copy, result["nazwa"], ""); } foreach (Match m in Regex.Matches(str, patterns["ulica"], System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { if (!result.ContainsKey("ulica")) result.Add("ulica", m.Value.ToString()); else result["ulica"] += "|" + m.Value.ToString(); copy = Regex.Replace(copy, result["ulica"], ""); // string pattern = @"((ul)|(uł)|(u1)){1}.?(\s)?"; string pattern = "((ul)|(uł)|(u1)){1}"; foreach (Match ma in Regex.Matches(result["ulica"], pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { // MessageBox.Show(ma.Value.ToString()); if (result.ContainsKey("ulica")) result["ulica"] = Regex.Replace(result["ulica"],ma.Value.ToString(),""); } result["ulica"] = Regex.Replace(result["ulica"], @"\.", ""); } foreach (Match m in Regex.Matches(str, patterns["numer ulicy"], System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { // MessageBox.Show("a:"+str); // MessageBox.Show("numer: "+m.Value.ToString()); if (!result.ContainsKey("numer ulicy")) result.Add("numer ulicy", m.Value.ToString()); else result["numer ulicy"] += "|" + m.Value.ToString(); copy = Regex.Replace(copy, result["numer ulicy"], ""); result["numer ulicy"] = Regex.Replace(result["numer ulicy"], result["ulica"], ""); string pattern = @"((ul)|(uł)|(u1)){1}\.*"; result["numer ulicy"] = Regex.Replace(result["numer ulicy"], pattern, ""); } // if(result.ContainsKey("ulica")) } if (!result.ContainsKey("ulica") && !result.ContainsKey("numer ulicy")) { copy = Regex.Replace(copy, "N.P", "",RegexOptions.IgnoreCase); copy = Regex.Replace(copy, "nabywca", "", RegexOptions.IgnoreCase); copy = Regex.Replace(copy, "sprzedawca", "", RegexOptions.IgnoreCase); copy = Regex.Replace(copy, ":", ""); copy = Regex.Replace(copy, "\n", ""); result["ulica"] = Regex.Replace(copy, "[0-9]{1,3}", ""); // MessageBox.Show("ulica po: " + result["ulica"]); result["numer ulicy"] = Regex.Replace(copy, @"\D*", ""); } //MessageBox.Show("left: " + copy); break; case("sprzedawca"): // Dictionary<string, string> nabywca = new Dictionary<string, string>(); foreach(string str in lines) { foreach (Match m in Regex.Matches(str, patterns["kod pocztowy"], System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { string temp = str; if (!result.ContainsKey("kod pocztowy")) result.Add("kod pocztowy", m.Value.ToString()); else { temp = Regex.Replace(temp, result["kod pocztowy"], ""); result["kod pocztowy"] += "|" + m.Value.ToString(); } temp = Regex.Replace(temp, result["kod pocztowy"], ""); temp = Regex.Replace(temp, ":", ""); temp = Regex.Replace(temp, " ", ""); if (!result.ContainsKey("miejscowosc")) result.Add("miejscowosc", temp); else { result["miejscowosc"] += "|" + temp; } // MessageBox.Show(result["miejscowosc"]); copy = Regex.Replace(copy, str, ""); copy = Regex.Replace(copy, result["miejscowosc"], ""); copy = Regex.Replace(copy, result["kod pocztowy"], ""); } foreach (Match m in Regex.Matches(str, patterns["NIP"], System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { if (!result.ContainsKey("NIP")) result.Add("NIP", m.Value.ToString()); else result["NIP"] += "|" + m.Value.ToString(); copy = Regex.Replace(copy, result["NIP"], ""); } foreach (Match m in Regex.Matches(str, "sprzedawca.*", System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { string temp = m.Value.ToString(); //MessageBox.Show(temp); temp = Regex.Replace(temp, "sprzedawca", "", RegexOptions.IgnoreCase); temp = Regex.Replace(temp, ":", ""); if (!result.ContainsKey("nazwa")) result.Add("nazwa",temp); else result["nazwa"] += "|" + temp; copy = Regex.Replace(copy, str, ""); // copy = Regex.Replace(copy, result["nazwa"], ""); } foreach (Match m in Regex.Matches(str, "nabywca.*", System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { string temp = m.Value.ToString(); // MessageBox.Show(temp); temp = Regex.Replace(temp, "nabywca", "",RegexOptions.IgnoreCase); temp = Regex.Replace(temp, ":", ""); temp = Regex.Replace(temp, "^ ", ""); if (!result.ContainsKey("nazwa")) result.Add("nazwa", temp); else result["nazwa"] += "|" + temp; // copy = Regex.Replace(copy, result["nazwa"], ""); copy = Regex.Replace(copy, str, ""); } foreach (Match m in Regex.Matches(str, patterns["ulica"], System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { if (!result.ContainsKey("ulica")) result.Add("ulica", m.Value.ToString()); else result["ulica"] += "|" + m.Value.ToString(); copy = Regex.Replace(copy, result["ulica"], ""); // string pattern = @"((ul)|(uł)|(u1)){1}.?(\s)?"; string pattern = "((ul)|(uł)|(u1)){1}"; foreach (Match ma in Regex.Matches(result["ulica"], pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { // MessageBox.Show(ma.Value.ToString()); if (result.ContainsKey("ulica")) result["ulica"] = Regex.Replace(result["ulica"],ma.Value.ToString(),""); } result["ulica"] = Regex.Replace(result["ulica"], @"\.", ""); } foreach (Match m in Regex.Matches(str, patterns["numer ulicy"], System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { // MessageBox.Show("a:"+str); // MessageBox.Show("numer: "+m.Value.ToString()); if (!result.ContainsKey("numer ulicy")) result.Add("numer ulicy", m.Value.ToString()); else result["numer ulicy"] += "|" + m.Value.ToString(); copy = Regex.Replace(copy, result["numer ulicy"], ""); result["numer ulicy"] = Regex.Replace(result["numer ulicy"], result["ulica"], ""); string pattern = @"((ul)|(uł)|(u1)){1}\.*"; result["numer ulicy"] = Regex.Replace(result["numer ulicy"], pattern, ""); } // if(result.ContainsKey("ulica")) } if (!result.ContainsKey("ulica") && !result.ContainsKey("numer ulicy")) { copy = Regex.Replace(copy, "N.P", "",RegexOptions.IgnoreCase); copy = Regex.Replace(copy, "nabywca", "", RegexOptions.IgnoreCase); copy = Regex.Replace(copy, "sprzedawca", "", RegexOptions.IgnoreCase); copy = Regex.Replace(copy, ":", ""); copy = Regex.Replace(copy, "\n", ""); result["ulica"] = Regex.Replace(copy, "[0-9]{1,3}", ""); // MessageBox.Show("ulica po: " + result["ulica"]); result["numer ulicy"] = Regex.Replace(copy, @"\D*", ""); } //MessageBox.Show("left: " + copy); break; case("naglowek"): result["nazwa"]=lines[0]; foreach (string str in lines) { foreach (Match m in Regex.Matches(str, patterns["kod pocztowy"], System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { string temp = str; if (!result.ContainsKey("kod pocztowy")) result.Add("kod pocztowy", m.Value.ToString()); else { temp = Regex.Replace(temp, result["kod pocztowy"], ""); result["kod pocztowy"] += "|" + m.Value.ToString(); } temp = Regex.Replace(temp, result["kod pocztowy"], ""); temp = Regex.Replace(temp, ":", ""); temp = Regex.Replace(temp, " ", ""); if (!result.ContainsKey("miejscowosc")) result.Add("miejscowosc", temp); else { result["miejscowosc"] += "|" + temp; } // MessageBox.Show(result["miejscowosc"]); copy = Regex.Replace(copy, result["miejscowosc"], ""); copy = Regex.Replace(copy, result["kod pocztowy"], ""); copy = Regex.Replace(copy, str, ""); } foreach (Match m in Regex.Matches(str, patterns["NIP"], System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { if (!result.ContainsKey("NIP")) result.Add("NIP", m.Value.ToString()); else result["NIP"] += "|" + m.Value.ToString(); copy = Regex.Replace(copy, result["NIP"], ""); copy = Regex.Replace(copy, "N.P:*", "",RegexOptions.IgnoreCase); } foreach (Match m in Regex.Matches(str, patterns["ulica"], System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { if (!result.ContainsKey("ulica")) result.Add("ulica", m.Value.ToString()); else result["ulica"] += "|" + m.Value.ToString(); copy = Regex.Replace(copy, result["ulica"], ""); // string pattern = @"((ul)|(uł)|(u1)){1}.?(\s)?"; string pattern = "((ul)|(uł)|(u1)){1}"; foreach (Match ma in Regex.Matches(result["ulica"], pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { // MessageBox.Show(ma.Value.ToString()); if (result.ContainsKey("ulica")) result["ulica"] = Regex.Replace(result["ulica"], ma.Value.ToString(), ""); } result["ulica"] = Regex.Replace(result["ulica"], @"\.", ""); } foreach (Match m in Regex.Matches(str, patterns["numer ulicy"], System.Text.RegularExpressions.RegexOptions.IgnoreCase)) { // MessageBox.Show("a:" + str); MessageBox.Show("numer: " + m.Value.ToString()); if (!result.ContainsKey("numer ulicy")) result.Add("numer ulicy", m.Value.ToString()); else result["numer ulicy"] += "|" + m.Value.ToString(); copy = Regex.Replace(copy, result["numer ulicy"], ""); result["numer ulicy"] = Regex.Replace(result["numer ulicy"], result["ulica"], ""); string pattern = @"((ul)|(uł)|(u1)){1}\.*"; result["numer ulicy"] = Regex.Replace(result["numer ulicy"], pattern, ""); } foreach (Match m in Regex.Matches(str, patterns["numer konta"])) { if (!result.ContainsKey("numer konta")) result.Add("numer konta", m.Value.ToString()); else result["numer konta"] += "|" + m.Value.ToString(); // copy = Regex.Replace(copy, result["numer konta"], ""); copy = Regex.Replace(copy, str, "",RegexOptions.IgnoreCase); } foreach (Match m in Regex.Matches(str, patterns["adres email"])) { if (!result.ContainsKey("adres email")) result.Add("adres email", m.Value.ToString()); else result["adres email"] += "|" + m.Value.ToString(); // copy = Regex.Replace(copy, result["numer konta"], ""); copy = Regex.Replace(copy, str, "", RegexOptions.IgnoreCase); } foreach (Match m in Regex.Matches(str, patterns["strona"])) { if (!result.ContainsKey("strona")) result.Add("strona", m.Value.ToString()); else result["strona"] += "|" + m.Value.ToString(); // copy = Regex.Replace(copy, result["numer konta"], ""); copy = Regex.Replace(copy, str, "", RegexOptions.IgnoreCase); } foreach (Match m in Regex.Matches(str, patterns["telefon"])) { if (!result.ContainsKey("telefon")) result.Add("telefon", m.Value.ToString()); else result["telefon"] += "|" + m.Value.ToString(); // copy = Regex.Replace(copy, result["numer konta"], ""); copy = Regex.Replace(copy, str, "", RegexOptions.IgnoreCase); result["telefon"] = Regex.Replace(result["telefon"], ":", ""); result["telefon"] = Regex.Replace(result["telefon"], ",", ""); } } if (!result.ContainsKey("ulica") && !result.ContainsKey("numer ulicy")) { copy = Regex.Replace(copy, "N.P", "", RegexOptions.IgnoreCase); copy = Regex.Replace(copy, "nabywca", "", RegexOptions.IgnoreCase); copy = Regex.Replace(copy, "sprzedawca", "", RegexOptions.IgnoreCase); copy = Regex.Replace(copy, ":", ""); copy = Regex.Replace(copy, "\n", ""); result["ulica"] = Regex.Replace(copy, "[0-9]{1,3}", ""); MessageBox.Show("ulica po: " + result["ulica"]); result["numer ulicy"] = Regex.Replace(copy, @"\D*", ""); } break; default: break; } return result; }