使用正则表达式解析SCAPROC日志文件

时间:2018-06-06 13:08:52

标签: regex sas

我正在尝试从使用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中出错的地方?

谢谢,

约旦

1 个答案:

答案 0 :(得分:1)

我设法使用以下正则表达式来解决方案:

    prx_output_lib = prxparse("!\bJOBSPLIT: LIBNAME (\S+) ""([^""]+)"" \S+!");