Можно ли объединить запросы регулярных выражений в SAS? - PullRequest
0 голосов
/ 30 января 2019

Я успешно реализовал отрицательный просмотр в своем коде регулярных выражений в SAS.Однако, есть несколько «слов», которые могут свести на нет искомую строку.В частности, я ищу фразу (из медицинских заметок), которая говорит: «производство карбапенмазы» или «подтверждение карбапенамазы», ​​и иногда этим фразам может предшествовать «не производство карбапенемазы» или «возможное производство карбапенамазы», ​​и я нене хочуУзнав, что отрицательные обратные просмотры требуют, чтобы квалифицирующие слова (если> 1) имели одинаковую длину, мне нужно создать 2 отдельных выражения регулярного выражения для захвата «не» и «возможно», как в:

*!!! Create template to identify key phrases in the comment/note;
retain carba1 carba2 carba3;
if _n_ = 1 then do;     /*probable*/
 carba1 = prxparse("/(?<!not\s)ca[bepr]\w*?\s*?(conf|posi|prod|\+)/i");
 carba2 = prxparse("/(?<!possible|probable\s)ca[bepr]\w*?\s*? 
 (conf|posi|prod|\+)/i");
 carba3 = prxparse("/(?<!not a\s)ca[bepr]\w*?\s*?(conf|posi|prod|\+)/i");
end;

if prxmatch(carba1,as_comments) > 0 or prxmatch(carba2,as_comments) > 0 or
prxmatch(carba3,as_comments) > 0;

Есть ли слово для этого, которое сократит время выполнения, или я застрял с этим?Любые советы / комментарии приветствуются.

1 Ответ

0 голосов
/ 31 января 2019

, если у него всего 4 сценария, и они просты.Вы можете сделать это просто с помощью содержит и не содержит.

data have;
length string $200.;
infile datalines;
input string & $ ;
datalines;
this is cool and carbapenmase producing or  wow so nice
this is wow confirmed carbapenamase confirmed hello
now this positive for modified hodge test and later 
cool is my name not carbapenemase producing" or "the modified hodge hello
wow and wow previous possible carbapenamase producing hello
 Mr cool is hello
;


 data want;
  set have;
    where (string contains "carbapenmase producing" or
     string contains "carbapenamase confirmed")
   and  not (string contains "not carbapenemase producing" or 
   string contains "possible carbapenamase producing");
  run;
...