【发布时间】:2020-08-01 08:38:41
【问题描述】:
我有一个电子邮件正文,其中有一个表格,其中“客户时间”作为第一个左列的标题。
我想提取整张表,但使用以下 exec 得到 Null。
let regex = /<tr><td><b>Client Time([\S\s]+)<table/;
Logger.log(regex.exec(tempbody));
这是额外的代码,但应该没问题。
if ((table = regex.exec(tempbody)) !== null) {
row_regex = new RegExp(/<tr>(.+)<\/tr>/g);
let data, tempdata, rows, cell;
Logger.log(data);
while ((rows = row_regex.exec(table[1])) !== null) {
data = []
cell_regex = new RegExp(/<td.*?>(.+?)<\/td>/g);
while ((cell = cell_regex.exec(rows[1])) !== null) {
data.push(cell[1]);
}
if (!tempdata || (tempdata && tempdata.length === data.length)) {
sheet.appendRow(data);
}
tempdata = data;
}
inProcessLabel.removeFromThread(threads[i]);
}
我需要在正则表达式中做哪些更改,抱歉我不太了解正则表达式,但相信同样的代码过去对我有用。
【问题讨论】:
-
请创建minimal reproducible example(包括电子邮件正文的最小版本和解析它的完整功能)
-
<table.*?Client Time.*?<\/table> -
这就像为我建立自己的帝国。不要说它已经过时了。让我活一次。
-
Parsing HTML with regex is a hard job HTML 和正则表达式不是好朋友。使用解析器,它更简单、更快且更易于维护。
标签: regex google-apps-script gmail-api