如何将GMAIL正文中的特定字段解析为谷歌SHEETS



我有一个gmail主体,它以以下内容开头:

Name: Full Report
Store: River North (Wells St)
Date Tripped: 18 Feb 2020 8:40 PM
Business Date: 18 Feb 2020 (Closed)
Message:
Information:
This alert was tripped based on a user defined trigger: Every 5 minutes.

我试图解析Date Tripped:字段和Business Date:字段,但不相信我得到了正确的正则表达式。

// Implement Parsing rules using regular expressions
if (content) {
tmp = content.match(/Date Tripped: s*([A-Za-z0-9.s ]+)(r?n)/);
var tripped = (tmp && tmp[1]) ? tmp[1].trim() : 'N/A';
tmp = content.match(/Business Date: [0-9][()]/);
var businessdate = (tmp && tmp[1]) ? tmp[1].trim() : 'N/A';

对于跳闸日期,需要进行细微更改:

Date Tripped:s*([:A-Za-z0-9s]+)r?n

您的主要错误是:忘记将:放在类括号内。提示:去掉r?n周围的()。你不想抓那些。

你可以把它缩短一点:

Date Tripped:s*([:ws]+)r?n

参见regex101

对于业务日期,这一个将起作用:

Business Date:s([ws]+([a-zA-Z]+))

甚至更短:

Business Date:s([ws]+(w+))

您的(主要(错误:您逃离了[,这在这里是不正确的。下一步:[()]匹配(),但不匹配(Closed)。参见regex101

您还可以使模式更加具体,并使用单个模式来匹配这两个选项。

b(?:Business Date|Date Tripped):s*(?:3[01]|[12][0-9]|0?[1-9])s+[A-Za-z]+s+d{4}s+(?:([^()]+)|(?:1[0-2]|0?[1-9]):[0-5]?[0-9]s*[AP]M)

解释

  • b(?:Business Date|Date Tripped):s*匹配其中一个选项
  • (?:非捕获组
    • 3[01]|[12][0-9]|0?[1-9]匹配数字1-31
  • )关闭组
  • s+[A-Za-z]+s+d{4}s+匹配1+字符A-Za-z后跟4位数字
  • (?:非捕获组
    • ([^()]+)从左括号到右括号匹配
    • |
    • (?:1[0-2]|0?[1-9]):[0-5]?[0-9]s*[AP]M匹配时间模式
  • )关闭组

Regex演示

请注意,该模式不会验证日期本身。

最新更新