【发布时间】:2018-03-23 09:45:21
【问题描述】:
我正在寻找能够执行此任务的正则表达式
消息正文输入:Test1 (Test2) (test3) (ti,ab(text(text here(possible text)text(possible text(more text))))) end (text)
我想要的结果结果:(text(text here(possible text)text(possible text(more text))))
我想收集ti,ab(................)里面的所有东西
var messageBody = message.getPlainBody()
var ssFile = DriveApp.getFileById(id);
DriveApp.getFolderById(folder.getId()).addFile(ssFile);
var ss = SpreadsheetApp.open(ssFile);
var sheet = ss.getSheets()[0];
sheet.insertColumnAfter(sheet.getLastColumn());
SpreadsheetApp.flush();
var sheet = ss.getSheets()[0];
var range = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn() + 1)
var values = range.getValues();
values[0][sheet.getLastColumn()] = "Search Strategy";
for (var i = 1; i < values.length; i++) {
//here my Regexp
var y = messageBody.match(/\((ti,ab.*)\)/ig);
if (y);
values[i][values[i].length - 1] = y.toString();
range.setValues(values);
【问题讨论】:
-
JavaScript 不允许您以这种方式使用正则表达式。要匹配括号,您需要递归或平衡表达式,这是 JavaScript 不支持的。
-
这可能不适合在 JavaScript 中使用正则表达式,因为没有合适的方法来匹配括号。您可能会更好地匹配组的开头,然后逐步遍历字符串的其余部分以计算括号。
-
我怎样才能解决我用javascript退出这种任务的新方法
-
你确定字符串是这样的吗?因为这里
(和)的数量是不平衡的。end之前不是缺少一个)吗? -
@WiktorStribiżew 感谢您的评论我已更正(现在它们已平衡