我有一个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 to : field和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';
发布于 2020-02-18 23:35:41
对于被绊倒的日期,需要做一些小改动:
Date Tripped:\s*([:A-Za-z0-9\s]+)\r?\n
您的主要错误:忘记将:
放在类括号中。提示:摆脱围绕(
和)
的\r?\n
。你不会想抓到那些的。
你可以让它更短一点:
Date Tripped:\s*([:\w\s]+)\r?\n
请参阅regex101
就营业日期而言,这一天可以:
Business Date:\s([\w\s]+\([a-zA-Z]+\))
甚至更短:
Business Date:\s([\w\s]+\(\w+\))
您的(主要)错误:您转义了这里不正确的\[
。下一步:[()]
匹配(
和)
,但不匹配(Closed)
。请参阅regex101
发布于 2020-02-19 00:51:47
您还可以使模式更加具体,并使用单个模式来匹配这两个选项。
\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,后面跟着4位数字(?:
非捕获群\([^()]+\)
匹配|
或(?:1[0-2]|0?[1-9]):[0-5]?[0-9]\s*[AP]M
匹配时间模式
)
紧群请注意,该模式不验证日期本身。
https://stackoverflow.com/questions/60292513
复制相似问题