我正在尝试从使用SCAPROC创建的日志中解析所有libnames和库路径。我使用以下代码成功解析了数据集名称:
data output_files;
infile scalog truncover;
input @1 logline $256.;
keep libname filename;
retain prx_output_file;
if _n_=1 then do;
prx_output_file = prxparse("!\bJOBSPLIT: DATASET OUTPUT \b.*\b (\b.*\b) \*/!");
end;
if prxmatch(prx_output_file, logline) > 0 then do;
filename_full=prxposn(prx_output_file,1,logline);
libname=scan(filename_full,1);
filename=scan(filename_full,2);
output output_files;
end;
run;
但是,我没有收到以下代码的正则表达式匹配项:
data output_lib;
infile scalog truncover;
input @1 logline $256.;
keep filepath lib_name;
retain prx_output_lib;
if _n_=1 then do;
prx_output_lib = prxparse("!\bJOBSPLIT: LIBNAME (\S+) ""([^""]+)"" \S+ \*\/!");
end;
if prxmatch(prx_output_lib, logline) > 0 then do;
lib_name=prxposn(prx_output_lib, 1 , logline);
filepath=prxposn(prx_output_lib, 2 , logline);
output output_lib;
end;
run;
注意:数据集WORK.OUTPUT_LIB有0个观察值和2个变量。
我已经在基于浏览器的编辑器中成功测试了正则表达式(粗体),该编辑器返回捕获组1中的libname和捕获组2中的路径名。我想解析的SCAPROC日志示例如下:< / p>
/* JOBSPLIT: LIBNAME LMCOMSYS "/team/Common/System/v1.00.3" access=readonly */
我正在使用SAS EG版本7.13 HF5(7.100.3.5486)(32位)
是否有人能够指出我在SAS中出错的地方?
谢谢,
约旦
答案 0 :(得分:1)
我设法使用以下正则表达式来解决方案:
prx_output_lib = prxparse("!\bJOBSPLIT: LIBNAME (\S+) ""([^""]+)"" \S+!");