У меня есть комментарии с несколькими идентификаторами, которые мне нужно извлечь из комментариев. Требуется каждый я в отдельном столбце.
Входные данные имеют 2 столбца - comment_id и Comment (он имеет 1 или несколько идентификаторов)
Желаемый результат должен иметь 2 столбца: comment_id и ID
Я использую следующую функцию.
Для синтаксического анализа
data work.comments_parsed;
set work.comments;
if _N_ = 1 then do;
pasre_id=prxparse("/ab[c|d]?e?\d+/");
end;
retain pasre_id;
start = 1;
stops = length(Comment);
run;
Для генерации вывода
data work.desired_output;
set work.comments_parsed;
length ID $ 500;
call prxnext(pasre_id, start, stops, Comment, pos, len);
do while (pos >0);
ID = substr(Comment,pos,len);
output;
call prxnext(pasre_id, start, stops, Comment, pos, len);
end;
run;
ОШИБКА: аргумент 1 функции PRXNEXT должен быть положительным целым числом, возвращаемым PRXPARSE для допустимого шаблона. ОШИБКА: в функции PRXNEXT обнаружена внутренняя ошибка. Шаг DATA завершается во время фазы EXECUTION.
Я считаю, что ошибка связана с неправильным синтаксическим анализом, однако, когда я использую функцию prxmatch напрямую с использованием регулярного выражения, я получаю правильное соответствие. Не могли бы вы подсказать мне, как я могу заставить этот код работать.
Этот код работает нормально
data pattern_testing;
set work.comments_parsed;
pos = prxmatch("/ab[c|d]?e?\d+?/", Comment);
run;
Но этот код также дает ту же ошибку:
data pattern_testing;
set work.comments_parsed;
pos = prxmatch(pasre_id,Comment);
run;