У меня есть комментарии с несколькими идентификаторами, которые мне нужно извлечь из комментариев. Каждый Id в отдельной колонке обязателен.
Входные данные имеют 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;