【问题标题】:RegExp formatting error in google-apps-scriptsgoogle-apps-scripts 中的正则表达式格式错误
【发布时间】:2013-06-27 18:27:47
【问题描述】:

我正在尝试编写一个 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 周免费试用 推荐经销商

                    [北罗德岛。] 点击下方横幅了解更多公司信息 以下是北罗德岛的油价     高 0     低 0 平均 0 公司名称 城镇价格 电话号码 日期计算 PRICERITE石油公司 - 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 日 +   北普罗维登斯 3.120 美元  6/26/2013 PAWTUCKET 3.450 美元 2013 年 6 月 18 日 A-STAR油 - 坎伯兰$ 3.120 6/24/2013通用石油公司 +坎伯兰$ 3.120 6/26/2013通用石油公司 坎伯兰 3.230 美元 2013 年 6 月 21 日 负担得起的燃料 SEEKONK 3.160 美元 2013 年 6 月 25 日 RAMBONE & SPRAQUE OIL SERVICE INC. NORTH SCITUATE 3.350 美元 2013 年 6 月 18 日 THRIFTY 油 蒂弗顿 3.199 美元 2013 年 6 月 19 日 折扣石油经纪人 史密斯菲尔德 3.249 美元 2013 年 6 月 18 日 T H MALLOY & SONS 坎伯兰 3.499 美元 2013 年 6 月 18 日 亨利石油公司 坎伯兰 3.600 美元 2013 年 6 月 18 日 辉光油 - 林肯 3.190 美元 2013 年 6 月 25 日 RI 石油俱乐部 +林肯$ 3.190 6/26/2013 RI石油俱乐部 NORTH PROVIDENCE 3.349 美元 2013 年 6 月 18 日 本网站所报的油价基于所提供的信息 石油交易商,未经 Energy Data, LLC 的独立验证。 Energy Data, LLC 对以下内容不作任何陈述或保证 参考经销商提供的石油价格、质量、交付或供应情况 在本网站上。

    *价格可能会发生变化

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

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

Google 脚本结果:

["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 美元 2013 年 6 月 26 日 DUPUIS OIL CO 爪子 $3.499 2013 年 6 月 18 日 专业供暖服务
    • 北普罗维登斯 $3.120 2013 年 6 月 25 日马洛尼油
    • 北普罗维登斯 3.120 美元 2013 年 6 月 26 日 马洛尼油 爪子 $3.450 2013 年 6 月 18 日 A-STAR OIL
    • CUMBERLAND 3.120 美元 6/24/2013 环球石油公司
    • 坎伯兰 3.120 美元 6/26/2013 环球石油公司 坎伯兰 3.230 美元 2013 年 6 月 21 日 负担得起的燃料 SEEKONK 3.160 美元 2013 年 6 月 25 日 RAMBONE & SPRAQUE OIL SERVICE INC. NORTH SCITUATE 3.350 美元 2013 年 6 月 18 日节俭石油 TIVERTON 3.199 美元 6/19/2013 折扣石油经纪人 史密斯菲尔德 3.249 美元 2013 年 6 月 18 日 T H MALLOY & SONS 坎伯兰 $3.499 2013 年 6 月 18 日 亨利石油公司 坎伯兰 3.600 美元 2013 年 6 月 18 日辉光油
    • 林肯 3.190 美元 2013 年 6 月 25 日 RI 石油俱乐部
    • 林肯 3.190 美元 2013 年 6 月 26 日 RI 石油俱乐部 北普罗维登斯 $3.349 2013 年 6 月 18 日

谢谢

【问题讨论】:

  • 尝试使用 regexpal.com 测试 JavaScript 正则表达式。

标签: regex google-apps-script


【解决方案1】:

你可以试试:

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

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

那么,myArray[1] 应该是您需要的输出。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-07-16
  • 1970-01-01
  • 2019-02-13
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多