gpt4 book ai didi

regex - 谷歌应用脚​​本正则表达式

转载 作者:行者123 更新时间:2023-12-05 07:50:21 24 4
gpt4 key购买 nike

我有一个我编写的谷歌应用程序脚本,并且它的工作方式非常接近我想要的方式。

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

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

主题:日期:回复日期:要求:契约(Contract)号:

因此,正则表达式会搜索硬编码值,如“Subject:”,然后捕获冒号后的所有内容,直到遇到换行符。它通过以下声明这样做:

内容匹配(/主题:(。*)/)

它将匹配冒号之后的任何内容,直到遇到换行符。这几乎适用于我需要抓取的所有字段。然而,有一点麻烦。其中之一,我需要抓取的最后一个(上面未显示)将跨越多行。无法预测需要多长时间,但我有另一段预定义的文本可用于确定停止捕获的位置。

因此,例如,一个字段可以跨越任意多行,然后消息正文中将出现类似于 ****end of input**** 的消息。我想捕获从我的匹配子句开始的任何内容,例如...“主题:”并在它遇到预定义短语“****输入结束****”时停止

我该如何编写匹配子句正则表达式来做到这一点?

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

在此先感谢您的帮助。

最佳答案

您可以使用任何字符的惰性匹配,包括带有 [\s\S]*? 的换行符,使用前瞻性限制检查我们是否到达了 **** 的结尾输入**** 子字符串:

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

参见 regex demo

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

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

参见 another demo

关于regex - 谷歌应用脚​​本正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36272446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com