internal AddressTruncator(AOTypeDictionary typeDictionary) { this.typeDictionary = typeDictionary; sb = new StringBuilder(); houseTypesMultiPattern = typeDictionary.GetRegexMultiPattern((int)ObjectLevel.House); roomTypesMultiPattern = typeDictionary.GetRegexMultiPattern((int)ObjectLevel.Room); regionTypesMultiPattern = typeDictionary.GetRegexMultiPattern((int)ObjectLevel.Region, GenderNoun.Fiminine); streetTypesMultiPattern = typeDictionary.GetRegexMultiPattern((int)ObjectLevel.Street); fullHouseTypesPattern = String.Format(typeAndNumber, houseTypesMultiPattern); fullRoomTypesPattern = String.Format(typeAndNumber, roomTypesMultiPattern); regionPattern = String.Format("^[^ ]+ая +{0}(?=[^а-я]+?)", regionTypesMultiPattern); allTypesMultiPattern = String.Format(@"(?<=[^а-я]|^){0}(\.+?|(?=[^а-я]|$))", typeDictionary.GetRegexMultiPattern()); housePredictPattern = String.Format("(?<=([^а-я]|^){0}[^а-я]*)[0-9]+([^а-я]*)([а-я](?=[^а-я]|$))*", streetTypesMultiPattern) + litterPattern; regexGroup = new RegexGroup(RegexOptions.Compiled | RegexOptions.IgnoreCase); }