Как разобрать указанное поле c из тела GMAIL в Google SHEETS - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть тело 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';

Ответы [ 2 ]

2 голосов
/ 19 февраля 2020

Для даты срабатывания требуется незначительное изменение:

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

1 голос
/ 19 февраля 2020

Вы также можете сделать шаблон немного более конкретным c и использовать один шаблон для сопоставления обоих вариантов.

\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] Соответствует ди git 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 demo

Обратите внимание, что этот шаблон не проверяет саму дату.

...