0

我正在尝试编写一个 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(永久链接)中正常工作,但在 google 脚本的调试器中评估不同。这里的规则有区别吗?

文本:

自上次检查以来,页面http://www.newenglandoil.com/rhodeisland/zone2.asp?x=0已更改。

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

                          返回罗德岛首页

                            向当地燃料经销商索取特别优惠

                                  石油经销商

                               2 周免费试用 推荐经销商

                           SPRAQUE OIL SERVICE INC. NORTH SCITUATE 3.350 美元 2013 年 6 月 18 日 THIFTY OIL TIVERTON 3.199 美元 2013 年 6 月 19 日 折扣石油经纪人史密斯菲尔德 3.249 美元 2013 年 6 月 18 日 TH MALLOY & Sons CUMBERLAND 3.499 美元 2013 年 6 月 18 日 亨利石油公司 06 美元 36 美元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 2013 年 6 月 18 日 本网站上的油价基于石油经销商提供的信息,未经 Energy Data, LLC 的独立验证。Energy Data, LLC 对本网站上提及的经销商的石油价格、质量、交付或可用性不作任何陈述或保证。199 2013 年 6 月 19 日折扣石油经纪人 SMITHFIELD 3.249 美元 2013 年 6 月 18 日 TH MALLOY & Sons CUMBERLAND 3.499 美元 2013 年 6 月 18 日 亨利石油公司 CUMBERLAND 3.600 美元 2013 年 6 月 18 日 GLOW OIL - LINCOLN 3.190 美元 2013 年 6 月 25 日 OIL CLUB + LINCOLN 3.190 美元 2013 年 6 月 26 日 RI OIL CLUB NORTH PROVIDENCE 3.349 美元 2013 年 6 月 18 日 本网站引用的油价基于石油交易商提供的信息,未经 Energy Data, LLC 的独立验证。Energy Data, LLC 对本网站上提及的经销商的石油价格、质量、交付或可用性不作任何陈述或保证。199 2013 年 6 月 19 日折扣石油经纪人 SMITHFIELD 3.249 美元 2013 年 6 月 18 日 TH MALLOY & Sons CUMBERLAND 3.499 美元 2013 年 6 月 18 日 亨利石油公司 CUMBERLAND 3.600 美元 2013 年 6 月 18 日 GLOW OIL - LINCOLN 3.190 美元 2013 年 6 月 25 日 OIL CLUB + LINCOLN 3.190 美元 2013 年 6 月 26 日 RI OIL CLUB NORTH PROVIDENCE 3.349 美元 2013 年 6 月 18 日 本网站引用的油价基于石油交易商提供的信息,未经 Energy Data, LLC 的独立验证。Energy Data, LLC 对本网站上提及的经销商的石油价格、质量、交付或可用性不作任何陈述或保证。600 2013 年 6 月 18 日 GLOW OIL - LINCOLN 3.190 美元 2013 年 6 月 25 日 RI OIL CLUB + LINCOLN 3.190 美元 2013 年 6 月 26 日 RI OIL CLUB 北普罗维登斯 3.349 美元 2013 年 6 月 18 日 本网站所引用的油价基于由石油经销商,未经 Energy Data, LLC 的独立验证。Energy Data, LLC 对本网站上提及的经销商的石油价格、质量、交付或可用性不作任何陈述或保证。600 2013 年 6 月 18 日 GLOW OIL - LINCOLN 3.190 美元 2013 年 6 月 25 日 RI OIL CLUB + LINCOLN 3.190 美元 2013 年 6 月 26 日 RI OIL CLUB 北普罗维登斯 3.349 美元 2013 年 6 月 18 日 本网站所引用的油价基于由石油经销商,未经 Energy Data, LLC 的独立验证。Energy Data, LLC 对本网站上提及的经销商的石油价格、质量、交付或可用性不作任何陈述或保证。

    *价格可能会发生变化

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

------------------- 页面报告结束 -----------------------

谷歌脚本结果:

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

Rubular 结果:

  1. PRICERITE石油公司
    • PAWTUCKET 3.210 美元 2013 年 6 月 14 日 DUPUIS OIL CO
    • PAWTUCKET $3.160 6/26/2013 DUPUIS OIL CO PAWTUCKET $3.499 6/18/2013 专业供暖服务
    • 北普罗维登斯 3.120 美元 2013 年 6 月 25 日 马洛尼油
    • 北普罗维登斯 3.120 美元 2013 年 6 月 26 日 MALONEY'S OIL PAWTUCKET 3.450 美元 2013 年 6 月 18 日 A-STAR OIL
    • 坎伯兰 3.120 美元 2013 年 6 月 24 日 环球石油公司
    • 坎伯兰 3.120 美元 2013 年 6 月 26 日 环球石油公司 坎伯兰 3.230 美元 2013 年 6 月 21 日 经济实惠的燃油搜寻 3.160 美元 2013 年 6 月 25 日 RAMBONE & SPRAQUE OIL SERVICE INC. NORTH SCITUATE 3.350 美元 2013 年 6 月 18 日 THRIFTY OIL TIVERTON/2901 年 3 美元。折扣石油经纪人 SMITHFIELD 3.249 美元 2013 年 6 月 18 日 TH MALLOY & Sons CUMBERLAND 3.499 美元 2013 年 6 月 18 日 亨利石油公司 CUMBERLAND 3.600 美元 2013 年 6 月 18 日 GLOW OIL
    • 林肯 3.190 美元 2013 年 6 月 25 日 RI 石油俱乐部
    • 林肯 3.190 美元 2013 年 6 月 26 日 RI OIL CLUB 北普罗维登斯 3.349 美元 2013 年 6 月 18 日

谢谢

4

1 回答 1

0

你可以试试:

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

因为您的文本有换行符,并且在 javascript 中 .* 不匹配换行符,但这确实: [^>]* (这意味着重复任何字符,包括换行符,而不是 > 字符)

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

于 2013-06-28T00:19:53.660 回答