从SAS中的现有字符串中提取格式为yyyymmdd
的日期戳的最佳方法是什么?
据我所知,最简单的方法似乎是使用带有prxmatch
函数的正则表达式来替换但模式中的所有内容。
[0-9]{8}
模式就足够了。这是我用字符串empty
替换8位模式(出于可读性)的目的:
data b(keep=have want);
/* HAVE */
have = '&libroot_hr./import/sxh3j900/20190702_SXH3J900_DWH_Adresse.txt';
regexp = 's/[0-9]{8}/empty/';
times = -1; /* -1: replace all occurences */
/* WANT */
want = prxchange(regexp, times, have);
/* Result
'&libroot_hr./import/sxh3j900/empty_SXH3J900_DWH_Adresse.txt'
*/
run;
如何更改此设置,以便用字符串empty
替换所有但 9位模式?
答案 0 :(得分:2)
data b(keep=have want);
have='&libroot_hr./import/sxh3j900/20190702_SXH3J900_DWH_Adresse.txt';
re = prxparse("/(\d{8})/");
if prxmatch(re,have) then do;
want = prxposn(re,0,have);
end;
run;
如果您只想提取前8位数字。
Here将正则表达式转换为 yyyymmdd 格式。