2013-06-27 73 views
0

我正在嘗試編寫一個谷歌應用程序腳本,它將解析文檔中的價目表,我的第一步是從報告中提取價格。谷歌應用程序腳本中的RegExp格式錯誤

function createAndSendDocument() { 
var labelObject = GmailApp.getUserLabelByName("Oil Prices"); 
var bodyRe = new RegExp("(?:Company Name Town Price Phone. Date Calc)(.*)(?=Oil prices quoted on this Website.*)","m"); 

var threads = labelObject.getThreads(0, 30); 
for (var i = 0; i < threads.length; i++) { 
    var massageObject = threads[i].getMessages()[0]; 
    var htmlDoc = Xml.parse(massageObject.getBody(), true); 
    var myArray = bodyRe.exec(htmlDoc.getElement().getElement("body").Text); 
} 

} 

的問題是,正則表達式出現在www.rubular.com(永久)正常工作,但在調試器的腳本谷歌正在評估不同。這裏的規則有差異嗎?

文字:

http://www.newenglandoil.com/rhodeisland/zone2.asp?x=0自上次檢查已 改變。

------ ------變化的新英格蘭首頁

返回羅得島家

REQUEST特別優惠 從當地燃料經銷商

油經銷商

2周Fr EE試用 推薦經銷商

[北羅得島] 點擊以下更多公司信息 橫幅下面是油價北羅得島高0低0 平均0 公司名稱城價格電話號碼日期計算器 實惠OIL INC - PAWTUCKET $ 3.210 2013年6月14日DUPUIS OIL CO + PAWTUCKET $ 3.160 2013年6月26日DUPUIS OIL CO PAWTUCKET $ 3.499 2013年6月18日 PROFESSIONAL供暖服務 - N的奧爾特普羅維登斯$ 3.120 2013年6月25日Maloney的油 +北普羅維登斯$ 3.120 2013年6月26日Maloney的油 PAWTUCKET $ 3.450 2013年6月18日 A-STAR OIL - CUMBERLAND $ 3.120 2013年6月24日環球石油公司 + CUMBERLAND $ 3.120 2013年6月26日環球石油公司 CUMBERLAND $ 3.230 2013年6月21日可負擔燃油 塞科克$ 3.160 2013年6月25日RAMBONE &的Spraque石油服務INC。 NORTH斯基尤特$ 3.350 2013年6月18日THRIFTY油 TIVERTON $ 3.199 6/19/2013折扣油券商 SMITHFIELD $ 3.249 6/18/2013 TH MALLOY & SONS CUMBERLAND $ 3.499 2013年6月18日 HENRY石油公司 CUMBERLAND $ 3.600 2013年6月18日GLOW OIL - 林肯$ 3.190 2013年6月25日RI OIL CLUB + LINCOLN $ 3.190 2013年6月26日RI OIL CLUB 北普羅維登斯$ 3.349 6/18/2013本網站上的油價基於石油交易商提供的 提供的信息,未經Energy Data,LLC獨立覈實。 Energy Data,LLC對本網站上提及的 代理商的價格,質量,交付或供應的油品不作任何陳述或保證。

*價格如有變動,

©2011能源數據,有限責任公司,保留所有權利。

-------------------頁面報告結束-----------------------

谷歌腳本結果:

[ 「CE \ XA0 $ 3.349 \ xa06 /二千零一十三分之十八\ XA0」, 「E \ XA0 $ 3.349 \ xa06 /二千零一十三分之十八 \ XA0」]

Rubular Results:

  1. 實惠OIL INC
    • PAWTUCKET $ 3.210 2013年6月14日DUPUIS OIL CO
    • PAWTUCKET $ 3.160 2013年6月26日DUPUIS OIL CO PAWTUCKET $ 3.499 2013年6月18日 專業供熱服務
    • 北普羅維登斯$ 3.120 2013年6月25日Maloney的油
    • 北普羅維登斯$ 3.120 2013年6月26日Maloney的油 PAWTUCKET $ 3.450 2013年6月18日 A-STAR OIL
    • CUMBERLAND $ 3.120 2013年6月24日環球石油公司
    • CUMBERLAND $ 3.120 2013年6月26日環球石油公司 CUMBERLAND $ 3.230 2013年6月21日可負擔燃油 塞科克$ 3.160 2013年6月25日RAMBONE &的Spraque石油服務INC。 NORTH斯基尤特$ 3.350 2013年6月18日THRIFTY油 TIVERTON $ 3.199 2013年6月19日折扣OIL經紀人 SMITHFIELD $ 3.249 2013年6月18日TH馬洛依& SONS CUMBERLAND $ 3.499 2013年6月18日 HENRY石油公司 CUMBERLAND $ 3.600 6/18/2013 GLOW OIL
    • LINCOLN $ 3.190 6/25/2013 RI OIL CLUB
    • LINCOLN $ 3.190 2013年6月26日RI OIL CLUB 北普羅維登斯$ 3.349 2013年6月18日

感謝

+0

請嘗試使用http://regexpal.com/來測試JavaScript Regex。 – fooby

回答

0

你可以嘗試:

var bodyRe = new RegExp("Company Name Town Price Phone. Date Calc([^>]*?(?=Oil prices quoted on this Website[^>]*))"); 

因爲你文本有換行符,在JavaScript中。*不匹配換行符,但是這樣做:[^>] *(這意味着重複包括換行符在內的任何字符,除>字符)

然後,myArray [1]應該是您的必需輸出。

+0

這樣做,很高興知道。我很好奇你是否可以提供比我更好的參考(因爲沒有提到)https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions – devanl