Как найти номер из строки? - PullRequest
0 голосов
/ 10 июня 2019

Мне нужно извлечь число из текстового поля. Поле tect не соответствует.

Я попытался написать подстроку, но это не работает, так как текст не соответствует.

CASE WHEN position ( 'CNTRL ', ACTVY_NOTE_TXT) > 0 
            THEN  SUBSTRING ( ACTVY_NOTE_TXT,position ( 'RECORD ID   ', ACTVY_NOTE_TXT)+6, position ( ' [', ACTVY_NOTE_TXT) -  position ( 'RECORD ID   ', ACTVY_NOTE_TXT) -6)
        ELSE NULL END  as DisputeID,

Input

RCVD 2019-05-06 BOR DISPUTED VIA MAIL- - STATES VICTIM OF IDENTITY THEFT SENT 10030 LIDB LETTER -FRANK CHICK - 525 STELLAR CT 525 - KODAK TN 37764 - -STEP FAILED- CBR DISPUTE CODED IN LAST 6 MONTHS-C106 05 15 2019 13:33:42 MWZ    OPEN ACCT DISPUTE RECORD ID   999703 [PJR748:5 21 2019 12:00:00 AM]

Вывод должен быть

999703

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Вы можете просто использовать

\d+(?=\s*\[)
  • \d+ - соответствует одной или нескольким цифрам
  • (?=\s*\[) - положительный прогноз, совпадение с последующим space (необязательно)и [ (обязательно)

Демо

0 голосов
/ 10 июня 2019

Если желаемое число всегда имеет [ справа, мы будем использовать это в нашем выражении:

([0-9]+)(?:\s+)?\[

Демо 1

и нашжелаемое число находится в этой группе захвата:

([0-9]+)

Если оно может всегда иметь 6 цифр, мы можем обновить наше выражение с квантификатором:

([0-9]{6})(?:\s+)?\[

Демонстрация 2

Если в нашей входной строке нет другого 6-значного числа, мы можем просто использовать:

([0-9]{6})

Демонстрация 3

Реализация

Для снежинок, если мы хотим применить выражение, эта ссылка может оказаться полезной.

...