繁体   English   中英

使用正则表达式在SAS中提取子字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM