Regex для очистки идентификаторов с пробелами и извлечения из строки - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть такие строки со встроенными идентификаторами.Идентификатор должен состоять из 9 непрерывных цифр, но часто пишется так.Я хочу извлечь только id и sanitize , поэтому его 9 непрерывных цифр

ID OF 20067 8641 IS RELATED 
WITH40106117 7.
AND 301287 532 
OR 301 287 532

Это регулярное выражение учитывает первый и третий приведенный выше пример (замена на \ 1 \ 2) Я не могу понять второй и четвертый пример.

.*[\s]([0-9]{1,9})\s([0-9]{1,9}).*

https://regex101.com/r/zEhSsy/1/

Я пишу это postgres, используя regexp_replace , но подойдет только решение регулярных выражений.

1 Ответ

0 голосов
/ 15 декабря 2018

Если между цифрами есть только пробелы, вы можете удалить их и извлечь последовательность из 9 цифр.

with t as --test data
(
select s::text from 
( VALUES ( 'ID OF 20067 8641 IS RELATED'), 
('WITH40106117 7.'),
('AND 301287 532 '),
('OR 301 287 532') ) as s 
) --test data ends 
select  s,SUBSTRING ( replace(s,' ','') FROM '\d{9}' ) as id from t;

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...