Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Google应用程序脚本正则表达式_Regex_Google Apps Script - Fatal编程技术网

Regex Google应用程序脚本正则表达式

Regex Google应用程序脚本正则表达式,regex,google-apps-script,Regex,Google Apps Script,我有一个谷歌应用程序脚本,我已经写了,并有它非常接近工作的方式,我想它了 目前,它将抓取收件箱中的前100封电子邮件,对它们进行一些过滤,使用正则表达式刮取一些字段,然后创建一封电子邮件,用刮取的内容和格式化的内容发送出去 我正在处理的这类电子邮件大部分都是标准化的。电子邮件正文具有预定义字段,如: 主题: 日期: 答复日期: 要求: 合同编号: 因此,正则表达式搜索硬编码的值,如“Subject:”,然后捕获冒号后面的所有内容,直到找到新行字符。它是这样说的: content.match(/主

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

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

我正在处理的这类电子邮件大部分都是标准化的。电子邮件正文具有预定义字段,如:

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

因此,正则表达式搜索硬编码的值,如“Subject:”,然后捕获冒号后面的所有内容,直到找到新行字符。它是这样说的:

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

它将匹配冒号后面的任何内容,直到它遇到新行字符为止。这几乎适用于我需要刮的所有田地。然而,其中一个更麻烦。其中一个,我需要刮的最后一个(上面没有显示)将跨越多行。无法预测它将持续多长时间,但我可以使用另一个预定义的文本片段来确定停止捕获的位置

例如,一个字段可以跨越任意数量的行,然后在消息体中将出现类似于****输入结束****的消息。我想捕获从我的匹配子句开始的任何内容,例如。。。“主题:”并在点击预定义短语“****输入结束****”时停止

如何编写match子句正则表达式来执行此操作

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


提前感谢您的帮助。

您可以使用任何字符的延迟匹配,包括带有
[\s\s]*?
的换行符,并通过前瞻性检查是否到达输入的
****结尾****
子字符串:

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

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

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

请参见类似于?@WiktorStribiżew:为什么不在此处使用
s
标志来匹配跨多行的文本?@noob:JavaScript RegExp不支持单线/DOTALL模式。