我有多个 id 的评论,我需要从评论中提取。每个 Id 在单独的列中都是必需的。
输入数据有 2 列 - comment_id 和 Comment(它有 1 个或多个 ID)
期望的输出应该有 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;
错误:函数 PRXNEXT 的参数 1 必须是 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;