Regex Google应用程序脚本正则表达式
我有一个谷歌应用程序脚本,我已经写了,并有它非常接近工作的方式,我想它了 目前,它将抓取收件箱中的前100封电子邮件,对它们进行一些过滤,使用正则表达式刮取一些字段,然后创建一封电子邮件,用刮取的内容和格式化的内容发送出去 我正在处理的这类电子邮件大部分都是标准化的。电子邮件正文具有预定义字段,如: 主题: 日期: 答复日期: 要求: 合同编号: 因此,正则表达式搜索硬编码的值,如“Subject:”,然后捕获冒号后面的所有内容,直到找到新行字符。它是这样说的: content.match(/主题:(.*)/) 它将匹配冒号后面的任何内容,直到它遇到新行字符为止。这几乎适用于我需要刮的所有田地。然而,其中一个更麻烦。其中一个,我需要刮的最后一个(上面没有显示)将跨越多行。无法预测它将持续多长时间,但我可以使用另一个预定义的文本片段来确定停止捕获的位置 例如,一个字段可以跨越任意数量的行,然后在消息体中将出现类似于****输入结束****的消息。我想捕获从我的匹配子句开始的任何内容,例如。。。“主题:”并在点击预定义短语“****输入结束****”时停止 如何编写match子句正则表达式来执行此操作 我做了很多研究,但没有任何成果。正则表达式不是我擅长的东西Regex Google应用程序脚本正则表达式,regex,google-apps-script,Regex,Google Apps Script,我有一个谷歌应用程序脚本,我已经写了,并有它非常接近工作的方式,我想它了 目前,它将抓取收件箱中的前100封电子邮件,对它们进行一些过滤,使用正则表达式刮取一些字段,然后创建一封电子邮件,用刮取的内容和格式化的内容发送出去 我正在处理的这类电子邮件大部分都是标准化的。电子邮件正文具有预定义字段,如: 主题: 日期: 答复日期: 要求: 合同编号: 因此,正则表达式搜索硬编码的值,如“Subject:”,然后捕获冒号后面的所有内容,直到找到新行字符。它是这样说的: content.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模式。