Для моего регулярного выражения в скрипте Служб Google требуется соответствие одного или другого выражения. - PullRequest
0 голосов
/ 04 июля 2018

Соответствующий текст будет представлять собой «Проблема» или «Запрос» с сопровождающим текстом. например,

Проблема: проверка всех котлов

Запрос: Ремонт насоса питательной воды Бойлер 5

Если я проверяю свое выражение, используя утилиту тестирования регулярных выражений javascript, он работает как положено, однако сценарий моих приложений завершается неудачно, поскольку проверяется только первое выражение, а альтернативная группа захвата всегда игнорируется.

tmp = content.match(/Request\s{0,3}:\s{0,3}([A-Za-z0-9.,'&\s]+)(\r?\n)|Issue\s{0,3}:\s{0,3}([A-Za-z0-9.,'&\s]+)(\r?\n)/);

1 Ответ

0 голосов
/ 06 июля 2018

Вы можете использовать

var s = "Issue: Inspection on all Boilers\n\nRequest: Repair Feed water pump Boiler 5";
var match = s.match(/\b(?:Issue|Request)\s*:\s*(.+)/); // Get a match
if (match) {                                           // Check if there is a match first
  console.log(match[1]);
}

Шаблон соответствует

  • \b - слово ограничено
  • (?:Issue|Request) - либо Issue, либо Request как целые слова
  • \s*:\s* - :, заключенный в 0+ пробелов
  • (.+) - Группа захвата 1: любой один или несколько символов, кроме символов разрыва строки.

Сначала мы получаем совпадение с помощью метода String#match, затем проверяем, есть ли совпадение с if (match) (или при попытке доступа к match[1], если совпадения не было), появляется ошибка, а затем получаем доступ к содержимое первой и единственной группы захвата с использованием match[1].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...