2016-03-18 45 views
2

問題提取SAS的子使用正則表達式

我需要提取從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/測試後,表達並找到合適的字符串。然後,我嘗試使用prxchange()功能使用上page 3 of this SAS regex whitepaper發現刪除除所需子的一切技術:

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,但我缺少文件的名稱。我嘗試過更換$的不同值,但沒有成功。

問題

我在做什麼錯這個正則表達式替換?

回答

3

你快到了。只是對錯誤的對象進行分組:

file=prxchange('s/^.*\d{2}(\w+\.zip).*$/$1/',-1, line); 
+0

賓果。謝謝!!! –