нет предшествующих символов в выражении регулярного выражения - PullRequest
0 голосов
/ 28 апреля 2020

Итак, я попытался использовать отрицательный взгляд в выражении регулярного выражения и посмотрел в Интернете другие решения, но они, похоже, не работают для меня, поэтому очевидно, что я делаю что-то не так -

Я ищите возврат в первой строке, но остальные должны быть нулевыми. По сути, мне нужен CT CHEST или CT LUNG. Любая помощь TIA

with test (id, description) as (
  select 1, 'CT CHEST HIGH RESOLUTION, NO CONTRAST'                         from dual union all --want this
  select 2, 'INJECTION, THORACIC TRANSFORAMEN EPIDURAL, NON NEUROLYTIC W IMAGE GUIDANCE.'                 from dual union all   --do not want this
  select 3, 'The cow came back. But the dog went for a walk'    from dual) --do not want this 
  select id, description, regexp_substr(description, '(?<![a-z]ct).{1,20}(CHEST|THOR|LUNG)',1,1,'i') from test;
.

Ответы [ 2 ]

1 голос
/ 29 апреля 2020
regexp_substr(description,'([^A-Z]|^)[CT].{1,20}(CHEST|THOR|LUNG)',1,1,'i') 

работает

0 голосов
/ 29 апреля 2020

Кредитное плечо Oracle Параметр Subexrpession для проверки на CT

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

'regexp_substr(description, '(^| )((ct ).*((CHEST)|(THOR)|(LUNG)))', 1, 1,'i', 2)`

-выражение 1 для поиска начала строки или пробела: (^| )

-выражение 3 для поиска 'CT': (ct )

-дальнее других символов:. *

-подвыражения 5,6,7: (CHEST)|(THOR)|(LUNG)

-выражение 2, которые содержат подвыражение 3, подвыражение 4

Я использую последний необязательный параметр, чтобы определить, что я хочу подвыражение 2.

    WITH test (id, description) as (
          SELECT 1
               , 'CT CHEST HIGH RESOLUTION , NO CONTRAST'
            FROM dual
           UNION ALL --want this
          SELECT 2
               , 'INJECTION , THORACIC TRANSFORAMEN EPIDURAL , NON NEUROLYTIC W IMAGE GUIDANCE.'
            FROM dual
           UNION ALL --do not want this
          SELECT 3
               , 'The cow came back. But the dog went FOR a walk'
    FROM dual
         ) --do not want this
  SELECT id
       , description
       , regexp_substr(description, '(^| )((ct ).*((CHEST)|(THOR)|(LUNG)))', 1, 1,'i', 2)
    FROM test;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...