谷歌应用程序编写正则表达式脚本



我已经编写了一个谷歌应用程序脚本,它也非常接近我想要的工作方式。

目前,它将抓取收件箱中排名前100的电子邮件,对它们进行一些过滤,使用正则表达式抓取一些字段,然后创建一封带有抓取和格式化内容的电子邮件发送出去。

我正在废弃的这类电子邮件在很大程度上是标准化的。电子邮件的正文有预定义的字段,如:

主题:日期:答复日期:要求:合同编号:

因此,正则表达式搜索像"Subject:"这样的硬编码值,然后捕获冒号之后的所有内容,直到它碰到一个换行符。它这样做的声明:

content.match(/主题:(.*)/)

它将匹配冒号之后的任何内容,直到它碰到一个换行符为止。这几乎适用于我需要刮的所有田地。然而,其中一个问题有点麻烦。其中一个,我需要刮的最后一个(上面没有显示)将跨越多行。无法预测它会持续多久,但我有另一段预定义的文本,可以用来确定在哪里停止捕获。

因此,例如,一个字段可以跨越任意数量的行,然后在消息体中会出现一条类似于输入***结尾的消息。我想捕获从匹配子句开始的任何内容,例如。。。"subject:",当它击中预定义短语"***输入结束***"时停止

如何编写match子句正则表达式来完成此操作?

我做了很多研究,但没有什么成果。正则表达式不是我很擅长的东西。

提前感谢您的帮助。

您可以使用任何字符的延迟匹配,包括一个带有[sS]*?的换行符,该换行符将通过前瞻检查来检查我们是否到达****end of input****子字符串:

/Subject :s*([sS]*?)(?=*{4}end of input*{4})/

查看regex演示

然而,对于较长的文本,我宁愿使用相同正则表达式的展开版本:

/Subject :s*([^*]*(?:*(?!*{3}end of input*{4})[^*]*)*)/

请参阅另一个演示

最新更新