Я пишу код для синтаксического анализа моего почтового тела в папке входящих сообщений, чтобы организовать результирующие переменные в виде строки электронной таблицы.
Но часть регулярных выражений несколько проблематична ....
Я не могу использовать отрицательный запрос «(? <=)» И получить сообщение об ошибке «Недопустимый квантификатор?». Это означает, что GAS не поддерживает функцию Regex. </p>
Я кодировал и тестировал в редакторе скриптов Google Apps (я использую бизнес аккаунт).
Я вижу позитивный взгляд "(? =)" Работает хорошо ...
Но, как вы можете видеть детали в ссылке на документ ниже, просмотр Regex, совпадение именованных групп и другие должны были быть доступны уже в середине 2017 года.
https://developers.google.com/web/updates/2017/07/upcoming-regexp-features
Посмотрите на последнюю строку кода.
function searchContactMail() {
var strTerms = '("")';
var myThreads = GmailApp.search(strTerms, 0, 20);
var myMsgs = GmailApp.getMessagesForThreads(myThreads);
var timeZone = Session.getScriptTimeZone();
for(var i=0;i < myMsgs.length;i++){
Logger.log(myMsgs[i][0].getSubject());
var rawBody = myMsgs[i][0].getPlainBody(); // .slice(0, max)
Logger.log(rawBody);
var refno = /\d{5}R_[KJ]/.exec(rawBody);
var wc = /[\d\,]+(?=\s+words)/.exec(rawBody);
var title = /.*(?=[\n\r]+Word Count)/m.exec(rawBody);
var dueDate = /.*(?=[\n\r]+K\-Editor)/m.exec(rawBody);
var trAssigned = /.*(?=[\n\r]+Our Ref)/m.exec(rawBody);
var HLT = /.*(?=[\n\r]+Unit Price)/m.exec(rawBody);
var caseSpecific = /(?<=Specific Info[\n\r]+).+/m.exec(rawBody);
Я выбрал две основные сравнительные линии:
var HLT = /.*(?=[\n\r]+Unit Price)/m.exec(rawBody);
. * [От 0 до нескольких символов]
(? = [\ n \ r] + Цена за единицу) [шаблон прогнозирования] -> это прекрасно работает.
var caseSpecific = /(?<=Specific Info[\n\r]+).+/m.exec(rawBody);
(? <= Конкретная информация [\ n \ r] +) [шаблон поиска за спиной] <br>
. + [множественный любой символ] -> это выдает ошибку «Недопустимый квантификатор?