google-apps-scripts中的RegExp格式错误

时间:2013-06-27 18:27:48

标签: regex google-apps-script

我正在尝试编写一个google-apps-script脚本来解析文档中的价格列表,我的第一步是从报告中提取价格。

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);
 }

}

问题是RegExp似乎在www.rubular.com(永久链接)中正常工作,但在谷歌脚本的调试器中评估不同。这里的规则是否存在差异?

文本:

  

页面http://www.newenglandoil.com/rhodeisland/zone2.asp?x=0有   自上次检查后发生了变化。

     ------改变------新英格兰之家

     

回到罗德岛之家

     

请求特别优惠   来自您当地的燃料经销商

     

石油经销商

     

2周免费试用   建议经销商

     

[北罗德岛。]   点击下面的横幅以获取更多公司信息   以下是北罗德岛High 0 Low 0的油价   平均为0   公司名称城镇价格电话#Date Calc   PRICERITE OIL INC    - PAWTUCKET $ 3.210 6/14/2013 DUPUIS OIL CO   + PAWTUCKET $ 3.160 6/26/2013 DUPUIS OIL CO   PAWTUCKET $ 3.499 6/18/2013   专业加热服务    - NORTH PROVIDENCE $ 3.120 6/25/2013 MALONEY'S OIL   + NORTH PROVIDENCE $ 3.120 6/26/2013 MALONEY'S OIL   PAWTUCKET $ 3.450 6/18/2013   A-STAR OIL    - CUMBERLAND $ 3.120 6/24/2013 UNIVERSAL OIL COMPANY   + CUMBERLAND $ 3.120 6/26/2013 UNIVERSAL OIL COMPANY   CUMBERLAND $ 3.230 6/21/2013经济实惠的燃料   SEEKONK $ 3.160 6/25/2013 RAMBONE&amp; SPRAQUE OIL SERVICE INC。   NORTH SCITUATE $ 3.350 6/18/2013 THRIFTY OIL   TIVERTON $ 3.199 6/19/2013折扣油类经纪人   SMITHFIELD $ 3.249 6/18/2013 T H MALLOY&amp; SONS   CUMBERLAND $ 3.499 6/18/2013   亨利油公司   CUMBERLAND $ 3.600 6/18/2013 GLOW OIL    - LINCOLN $ 3.190 6/25/2013 RI OIL CLUB   + LINCOLN $ 3.190 6/26/2013 RI OIL CLUB   NORTH PROVIDENCE $ 3.349 6/18/2013本网站引用的油价基于所提供的信息   由石油经销商提供,未经Energy Data,LLC独立验证。   Energy Data,LLC对此不做任何陈述或保证   由经销商提供的价格,质量,交付或可用性   到这个网站。

     

*价格可能会发生变化

     

COPYRIGHT©2011 Energy Data,LLC,保留所有权利。

     

-------------------页面结束报告----------------------- < / p>

Google脚本结果:

  

[“CE \ xa0 $ 3.349 \ xa06 / 18/2013 \ xa0”,“E \ xa0 $ 3.349 \ xa06 / 18/2013   \ XA0" ]

Rubular结果:

  
      
  1.   PRICERITE OIL INC   
        
    • PAWTUCKET $ 3.210 6/14/2013 DUPUIS OIL CO
    •   
    • PAWTUCKET $ 3.160 6/26/2013 DUPUIS OIL CO   PAWTUCKET $ 3.499 6/18/2013   专业加热服务
    •   
    • NORTH PROVIDENCE $ 3.120 6/25/2013 MALONEY'S OIL
    •   
    • NORTH PROVIDENCE $ 3.120 6/26/2013 MALONEY'S OIL   PAWTUCKET $ 3.450 6/18/2013   A-STAR OIL
    •   
    • CUMBERLAND $ 3.120 6/24/2013 UNIVERSAL OIL COMPANY
    •   
    • CUMBERLAND $ 3.120 6/26/2013 UNIVERSAL OIL COMPANY   CUMBERLAND $ 3.230 6/21/2013经济实惠的燃料   SEEKONK $ 3.160 6/25/2013 RAMBONE&amp; SPRAQUE OIL SERVICE INC。   NORTH SCITUATE $ 3.350 6/18/2013 THRIFTY OIL   TIVERTON $ 3.199 6/19/2013折扣油类经纪人   SMITHFIELD $ 3.249 6/18/2013 T H MALLOY&amp; SONS   CUMBERLAND $ 3.499 6/18/2013   亨利油公司   CUMBERLAND $ 3.600 6/18/2013 GLOW OIL
    •   
    • LINCOLN $ 3.190 6/25/2013 RI OIL CLUB
    •   
    • LINCOLN $ 3.190 6/26/2013 RI OIL CLUB   NORTH PROVIDENCE $ 3.349 6/18/2013
    •   
  2.   

由于

1 个答案:

答案 0 :(得分:0)

你可以尝试:

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

因为你的文字有换行符,而在javascript中。*与换行符不匹配,但这样做:[^&gt;] *(这意味着重复任何字符,包括换行符,而不是&gt;字符)

然后,myArray [1]应该是您所需的输出。