Regex: извлечение номера дома из адреса - PullRequest
0 голосов
/ 25 июня 2018

У меня есть следующие шаблоны:

  1. 13 R 2
  2. 48 B / 5
  3. 42 B
  4. 42B
  5. 303 Box 15
  6. 303 Bte 15
  7. 303 B Bt 15

и хотят получить только следующие результаты (потому что Box 15, Bte 15 - коробканомера, и мне нужен только дом nbr + потенциально буква, прикрепленная к номеру дома):

  1. 13 R 2
  2. 48 B / 5
  3. 42 B
  4. 42B
  5. 303
  6. 303
  7. 303 B

Возможно ли использование регулярного выражения?Я попробовал следующее: REGEXP_SUBSTR(my_string_variable, '^\d+(\s*\w$)?').Это, однако, работает только для шаблонов 3-5, а не для первых 2 и последних шаблонов.Удаление $ из regex неправильно «обрезает» первую букву для шаблонов 5 и 6.

Я в основном предполагаю, что если буква за цифрой больше 1 символа, то она принадлежитна номер ящика.Например, BTE - это французское сокращение для Boite, что означает Box.Я понимаю, что это может быть неверно, если номер дома имеет 2 буквы (например, 11 АА), но я не знаю решения для этого, и я не думаю, что это происходит много.

1 Ответ

0 голосов
/ 25 июня 2018

Это удалит: пробел, за которым следует заглавная буква, за которой следует хотя бы одна строчная буква, за которой следует дополнительный пробел, за которым следует любое количество цифр :

RegExp_Replace(house_number, '\s[A-Z][a-z]+\s+\d+$')

См. regex101.com

...