regex - 使用正则表达式解析 SCAPROC 日志文件
问题描述
我正在尝试从使用 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 日志行示例如下:
/* JOBSPLIT: LIBNAME LMCOMSYS "/team/Common/System/v1.00.3" access=readonly */
我正在使用 SAS EG 版本 7.13 HF5 (7.100.3.5486)(32 位)
谁能指出我在 SAS 中哪里出错了?
谢谢,
约旦
解决方案
我已经设法使用以下正则表达式找到解决方案:
prx_output_lib = prxparse("!\bJOBSPLIT: LIBNAME (\S+) ""([^""]+)"" \S+!");
推荐阅读
- javascript - 无法使用 jQuery 填充某些复选框
- unit-testing - 在 Go 单元测试中使用两个不同的模拟
- java - 如何使用 firebase 数据库中的值?
- windows - Chrome、Windows 上的灰色表情符号
- javascript - v-if 在 Vuex getter 上
- google-bigquery - BigQuery 查询历史记录:获取性能计数器/指标
- c# - 我的 c 代码中的错误,Console.ReadLine 错误?
- python-3.x - 为什么闰年也没有返回?
- javascript - 使用用户输入询问玩家是否想再次玩。问题:特定条件下的循环
- ios - 如何在 UIScrollView 中设置一个空的 UIStackView 以便我可以在运行时填充它?