powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Регулярное выражение для разбора улицы, дома, квартиры
10 сообщений из 10, страница 1 из 1
Регулярное выражение для разбора улицы, дома, квартиры
    #39155242
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
У меня уже начинают поджилки трястись от мысли что я никогда не найду решения для разбора строки адреса и окажусь некомпетентным исполнителем в глазах заказчика.
По сути занимаюсь не этим, но недавно заказчик попросил помощи а я как то уверенно пообещал не поняв сути, видимо интересно стало))
Есть одна старая табличка в Postgresql с колонкой в которой лежат данные вида:
"ул. Солнечная 12-12"
"ул. Тимирязева 73Г-2"
"1 пер.Бутурлиных 69А"
"б-р Новосондецкий 5/1-749"
"ул. 40-летия Победы 76-914"
"70 Лет Октября 43-14"
и т.п.

Мне нужно вытащить в отдельные поля:
- Улицу
- Дом(с литерой или дробью если есть)
- Квартиру(если есть)

Есть некоторые помощники и исходные правила:
- Есть табличка с названиями всех улиц (справочник улиц)
- Название улиц могут начинаться на: Ул., Ул , Пер., Пер-к, Пр-т, Пр-кт, Пр.,б-р

Как мне быть? Мой моск наотрез отказывается принимать RegExp, хотя я даже чего-то намудрил вчера ночью))
Есть ли какое нибудь решение? не обязательно регуляркой!
...
Рейтинг: 0 / 0
Регулярное выражение для разбора улицы, дома, квартиры
    #39155386
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такие еще бывают:
Код: sql
1.
2.
6 микрорайон, д.7 кор. 2
ул. Гагарина, 3-я линия, д.2
...
Рейтинг: 0 / 0
Регулярное выражение для разбора улицы, дома, квартиры
    #39155391
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMV,
должен быть формат задан для адреса, иначе бессмысленно его разбирать.
формат есть?
...
Рейтинг: 0 / 0
Регулярное выражение для разбора улицы, дома, квартиры
    #39155542
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMV,

Код: plaintext
^(.+)\s+(\S+)(-(\d+))?$
$1 — всё перед номером дома, $2 — номер, $4, если есть, — квартира.
но нельзя недооценивать фантазию операторов, заполнявших эти данные — будут и другие варианты записи, которые эта регулярка не поймает.
...
Рейтинг: 0 / 0
Регулярное выражение для разбора улицы, дома, квартиры
    #39155666
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RWolfAndronovMV,

Код: plaintext
^(.+)\s+(\S+)(-(\d+))?$
$1 — всё перед номером дома, $2 — номер, $4, если есть, — квартира.
но нельзя недооценивать фантазию операторов, заполнявших эти данные — будут и другие варианты записи, которые эта регулярка не поймает.

Спасиб большое!
Я в Postgresql это делаю, так вот он мне выдает так

SELECT unnest(regexp_matches('Б-Р Новосоидецкий 86\2-362', '^(.+)\s+(\S+)(-(\d+))?$', '')) as val

Результат 3 строки:
"Б-Р Новосоидецкий"
"86\2-362"
""

Короче он квартиру не выносит в отдельный элемент
...
Рейтинг: 0 / 0
Регулярное выражение для разбора улицы, дома, квартиры
    #39155670
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ща на java попробую
...
Рейтинг: 0 / 0
Регулярное выражение для разбора улицы, дома, квартиры
    #39155678
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я даже тут http://regexr.com/ попробовал, он выдает 2 группы:
- Все что до № дома
- И все что после улицы

Вот пример: 70 Лет Октября 60-21
Там внизу в Tools есть вкладка Details, там видно группы
...
Рейтинг: 0 / 0
Регулярное выражение для разбора улицы, дома, квартиры
    #39155708
RWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMVКороче он квартиру не выносит в отдельный элемент
Тогда так:
Код: plaintext
^(.+)\s+(\S+?)(-(\d+))?$
...
Рейтинг: 0 / 0
Регулярное выражение для разбора улицы, дома, квартиры
    #39155759
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RWolfAndronovMVКороче он квартиру не выносит в отдельный элемент
Тогда так:
Код: plaintext
^(.+)\s+(\S+?)(-(\d+))?$


Ну наконец-то.... Спасибо большое! получилось!
...
Рейтинг: 0 / 0
Регулярное выражение для разбора улицы, дома, квартиры
    #39155771
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RWolfAndronovMVКороче он квартиру не выносит в отдельный элемент
Тогда так:
Код: plaintext
^(.+)\s+(\S+?)(-(\d+))?$


А еще вопрос:
между № дома и квартирой обычно ставят -, и этот шаблон как раз для него, а можно еще учесть что вместо - может быть пробел?
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Регулярное выражение для разбора улицы, дома, квартиры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]