Страницы: 1
RSS
Вытащить наименование населенного пункта (regexp)
 
Добрый день Уважаемые коллеги!
Большая просьба, помогите с моей проблемой.
Имеем адрес в строке(разделителей практически нет) мне необходимо в данном случае вытащить название деревни.

По структуре, необходимое наименование начинается с первой прописной д/ либо д. Но у меня проблема возникла в том, что наименование может включать в себя два слова. Каким образом можно описать мою хотелку в виде Начало д или д. а конец - это "пробел и ," или "пробел и любая прописная буква" . С началом выборки справился, а вот зафиналить к сожалению не получается.

Для удобства пример подкинул в шаблон Николая.
 
д[.?\s?]([а-яА-ЯёЁ ]+){1,2}(?=,? тер)
 
Vasil12, у меня так получилось

д[.?\s?]+[а-яА-ЯёЁ]+(\s*[а-яА-ЯёЁ]+(\s+|\b)|\s*)

Kuzmich, как бы начать разбираться в этом, я как в темном лесу)
Изменено: Mershik - 04.03.2021 11:57:19
Не бойтесь совершенства. Вам его не достичь.
 
Mershik,
Я же вам давал ссылки на литературу
Если добавить
Код
 regex.ignorecase = True

д[.?\s?]([а-яё ]+){1,2}(?=,? тер)
 
Kuzmich, да все сохранено) просто это нужна практика) спасибо еще раз)
Не бойтесь совершенства. Вам его не достичь.
 
Низкий поклон, все получилось!

PSВыражение от Mershik, для моей ситуации более универсально, тк в решении от  Kuzmich, мы упираемся в "тер" а это не всегда справедливо. Я добавил несколько новых вариаций.

Большое Спасибо!

Как этим овладеть в совершенстве, непонятно  
 
написание Pattern для RegExp - это чистой воды программирование
можно написать полстраницы кода на VBA или 15-30 символов в Pattern
понятно, что и написание VBA кода требует определенных знаний, но в данном случае требует аккуратности, усидчивости и скоростного набора
а
написание Pattern практически только размышлений
и там и там каждый набранный символ должен быть на своем месте, но что такое набрать 1000-2000 или более символов и набрать 15-30 символов Pattern и около 100 символов вспомогательного текста  (инициировать RegExp, протестировать текст, получить результат)
Изменено: Ігор Гончаренко - 04.03.2021 12:21:25
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Код
д[.?\s?]([а-яА-ЯёЁ ]+){1,2}(?=,? тер| ул\.|снт|д\.)
 
Цитата
Kuzmich написал:
д[.?\s?]([а-яА-ЯёЁ ]+){1,2}(?=,? тер| ул\.|снт|д\.)

Да,  я понял Вашу идею, но после необходимого наименования вы обрезаете по маске (?=,? тер| ул\.|снт|д\.) а там может быть еще пол сотни вариантов, которые объединяет только наличие запятой или слова начинающегося с прописной буквы.  
 
Цитата
или слова начинающегося с прописной буквы
Код
д[.?\s?]([а-яА-ЯёЁ ]+){1,2}(?=,? [а-я]+)
 
Цитата
Kuzmich написал:
д[.?\s?]([а-яА-ЯёЁ ]+){1,2}(?=,? [а-я]+)
Супер! Спасибо!
Страницы: 1
Наверх