2015-10-21 73 views
-1

我想從使用GAS的遠程URL中提取所有的URL,但我現在的代碼沒有給我數據。任何人可以告訴我什麼是正確的正則表達式模式,我應該使用,所以我得到所有的http url?使用logger.log的數組內容始終爲空!如何使用Google腳本解析頁面中的所有URL?

function getURLS() 
{ 

    var url = "http://www.someurlgoeshere.com/"; 
    var options = 
    { 
    headers : {'Cache-Control' : 'max-age=0'} 
    }; 


    var html = UrlFetchApp.fetch(url, options).getContentText(); 


    var inner_links_arr= []; 
    var linkRegExp = /http"(.*?)"/gi; // regex expression object 

    var match = linkRegExp.exec(html); 
    while (match != null) 
    { 


     inner_links_arr.push(match[1]); 

    } //end of while 

    Logger.log(inner_links_arr); 
} 
+0

感謝您的回覆。我什至試圖沒有推到陣列!我甚至試圖把HTML =「http://www.stackoverflow.com/」;和URL沒有被添加到數組! – user1788736

回答

0

您的正則表達式匹配不正確。您可以使用許多不同的在線工具測試您的正則表達式,並驗證它們是否正確匹配。

See this from regexr.com

((https?|ftp)://|www\.)[^\s/$.?#].[^\s]* 

括號的第一組,匹配或者萬維網。或https/http/ftp:// parens的外部組然後匹配任何不是空白的/ /,$,。,?或#,然後是最後一部分,匹配不是空格後的任何內容

+0

我試圖使用你建議的正則表達式,但它給了我語法錯誤var linkRegExp =((https?| ftp):// | www \。)[^ \ s /$.?#]。[^ \ s] */GI; – user1788736