|
|
|
Регулярное выражение для разбора улицы, дома, квартиры
|
|||
|---|---|---|---|
|
#18+
Добрый день! У меня уже начинают поджилки трястись от мысли что я никогда не найду решения для разбора строки адреса и окажусь некомпетентным исполнителем в глазах заказчика. По сути занимаюсь не этим, но недавно заказчик попросил помощи а я как то уверенно пообещал не поняв сути, видимо интересно стало)) Есть одна старая табличка в Postgresql с колонкой в которой лежат данные вида: "ул. Солнечная 12-12" "ул. Тимирязева 73Г-2" "1 пер.Бутурлиных 69А" "б-р Новосондецкий 5/1-749" "ул. 40-летия Победы 76-914" "70 Лет Октября 43-14" и т.п. Мне нужно вытащить в отдельные поля: - Улицу - Дом(с литерой или дробью если есть) - Квартиру(если есть) Есть некоторые помощники и исходные правила: - Есть табличка с названиями всех улиц (справочник улиц) - Название улиц могут начинаться на: Ул., Ул , Пер., Пер-к, Пр-т, Пр-кт, Пр.,б-р Как мне быть? Мой моск наотрез отказывается принимать RegExp, хотя я даже чего-то намудрил вчера ночью)) Есть ли какое нибудь решение? не обязательно регуляркой! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 09:18 |
|
||
|
Регулярное выражение для разбора улицы, дома, квартиры
|
|||
|---|---|---|---|
|
#18+
Такие еще бывают: Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 12:08 |
|
||
|
Регулярное выражение для разбора улицы, дома, квартиры
|
|||
|---|---|---|---|
|
#18+
AndronovMV, должен быть формат задан для адреса, иначе бессмысленно его разбирать. формат есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 12:12 |
|
||
|
Регулярное выражение для разбора улицы, дома, квартиры
|
|||
|---|---|---|---|
|
#18+
AndronovMV, Код: plaintext но нельзя недооценивать фантазию операторов, заполнявших эти данные — будут и другие варианты записи, которые эта регулярка не поймает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 13:59 |
|
||
|
Регулярное выражение для разбора улицы, дома, квартиры
|
|||
|---|---|---|---|
|
#18+
RWolfAndronovMV, Код: plaintext но нельзя недооценивать фантазию операторов, заполнявших эти данные — будут и другие варианты записи, которые эта регулярка не поймает. Спасиб большое! Я в Postgresql это делаю, так вот он мне выдает так SELECT unnest(regexp_matches('Б-Р Новосоидецкий 86\2-362', '^(.+)\s+(\S+)(-(\d+))?$', '')) as val Результат 3 строки: "Б-Р Новосоидецкий" "86\2-362" "" Короче он квартиру не выносит в отдельный элемент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 15:15 |
|
||
|
Регулярное выражение для разбора улицы, дома, квартиры
|
|||
|---|---|---|---|
|
#18+
ща на java попробую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 15:16 |
|
||
|
Регулярное выражение для разбора улицы, дома, квартиры
|
|||
|---|---|---|---|
|
#18+
Я даже тут http://regexr.com/ попробовал, он выдает 2 группы: - Все что до № дома - И все что после улицы Вот пример: 70 Лет Октября 60-21 Там внизу в Tools есть вкладка Details, там видно группы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 15:21 |
|
||
|
Регулярное выражение для разбора улицы, дома, квартиры
|
|||
|---|---|---|---|
|
#18+
AndronovMVКороче он квартиру не выносит в отдельный элемент Тогда так: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 15:44 |
|
||
|
Регулярное выражение для разбора улицы, дома, квартиры
|
|||
|---|---|---|---|
|
#18+
RWolfAndronovMVКороче он квартиру не выносит в отдельный элемент Тогда так: Код: plaintext Ну наконец-то.... Спасибо большое! получилось! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 16:14 |
|
||
|
Регулярное выражение для разбора улицы, дома, квартиры
|
|||
|---|---|---|---|
|
#18+
RWolfAndronovMVКороче он квартиру не выносит в отдельный элемент Тогда так: Код: plaintext А еще вопрос: между № дома и квартирой обычно ставят -, и этот шаблон как раз для него, а можно еще учесть что вместо - может быть пробел? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2016, 16:20 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39155771&tid=1340811]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
144ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 498ms |

| 0 / 0 |
