[英]Extracting a substring in SAS using regex
问题
我需要使用正则表达式从HTML提取特定的字符串。 字符串名称始终遵循以下模式:
<2 digits><any number of characters>.zip
我想一步一步做到这一点。
我有的
data have;
infile datalines truncover;
input Line $ 1-500;
datalines;
"<td><a href=""Location/01data.zip"">2001</td>"
"<td><a href=""Location/02moarstuff.zip"">2002</td>"
;
run;
我需要的
HTML代码中的文件名和扩展名。
File Line
01data.zip "<td><a href=""Location/01data.zip"">2001</td>"
02moarstuff.zip "<td><a href=""Location/02moarstuff.zip"">2002</td>"
我尝试过的
我尝试使用以下正则表达式:
/\\d+\\w+(\\.zip)/
在使用http://regexr.com/测试之后,该表达式确实找到了正确的字符串。 然后,我尝试使用此SAS regex白皮书第3页上的技术,通过使用prxchange()
函数删除除所需子字符串之外的所有内容:
data want;
length File $25.;
set have;
file=prxchange('s/^.*\d+\w+(\.zip).*$/$1/',-1, line);
run;
这会让我:
File Line
.zip "<td><a href=""Location/01data.zip"">2001</td>"
.zip "<td><a href=""Location/02moarstuff.zip"">2002</td>"
最终将字符串替换为.zip
,但是我缺少文件名。 我在替换中尝试了$
其他值,但没有成功。
题
此正则表达式替换我在做什么错?
你快到了 只是对错误的对象进行分组:
file=prxchange('s/^.*\d{2}(\w+\.zip).*$/$1/',-1, line);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.