Регулярное выражение для комбинаций цифра + буква в Bigquery - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь извлечь 2А, 6В, 8, 9А, 33, 65 c, 84 из последовательности, приведенной ниже.

Логически для этого требуется любое число [0-9], присоединенное к одна буква перед запятой или пробелом.

2A, Beech Avenue 
Flat 6B Earl's Court Drive 
8 Ripley Drive 
9A, Grosvenor Park Way, Thirsk 
33, Dover Priory 
Block 65c,Earl's Avenue 
84, Wayfair Drive 

Насколько я знаю, с кодом, который работает для извлечения чисел, но отдельные буквы и пробелы оказываются чрезвычайно сложными:

REGEXP_REPLACE('[^0-9]', '') FROM list

1 Ответ

1 голос
/ 06 января 2020

Один метод представляет собой комбинацию regexp_extract() и regexp_replace():

 select str,
       REGEXP_REPLACE(regexp_extract(str, r'^[0-9]+[A-Za-z]?[\W]|[\W][0-9]+[A-Za-z]?$|[\W][0-9]+[A-Za-z]?[\W]'), r'[\W]', '')
from (select '2A, Beech Avenue' as str union all
      select 'Flat 6B Earl\'s Court Drive' as str union all
      select '8 Ripley Drive' as str union all
      select '9A, Grosvenor Park Way, Thirsk' union all
      select '33, Dover Priory' as str union all
      select 'Block 65c,Earl\'s Avenue' as str union all
      select '84, Wayfair Drive'
     ) x
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...