Сценарии приложений Google: регулярное выражение на основе двух критериев, включая переданную переменную - PullRequest
2 голосов
/ 25 октября 2019

Я использую SpreadsheetApp.newFilterCriteria().whenFormulaSatisfied() для фильтрации листа, но я не могу правильно настроить функцию regexmatch (). Мне нужно отфильтровать столбец A на основе двух критериев:

  1. должен содержать «ak1» или «ak2»
  2. И должен содержать myVar, который является переменной, которая будет переданак сценарию.

Я знаю, как написать оператор regexmatch, чтобы получить критерии 1 (regexmatch(A:A, "(?i)ak1|ak2")), но я застрял на том, как объединить это с критериями 2.

Моя лучшая попытка на данный момент:

var regex = new RegExp( myVar, 'g' );
var crit = '=regexmatch(A:A, "^(?=.*ak1|ak2|)(?=.*myVar)")'

Отредактировано, чтобы добавить пример:

Если столбец A содержит

Chr_rq_ak1
Chr_rq_ak2
Chr_rq_ak6
Chr_gv_ak1

, я ожидаю, что следующее будетвидимый, а остаток скрыт:

Chr_rq_ak1
Chr_rq_ak2

Ответы [ 2 ]

2 голосов
/ 25 октября 2019

Если вы хотите использовать чередование, вы должны сгруппировать их (?=.*(?:k1|ak2)) и пропустить | в конце.

Если у вас есть только один следующий символ, вы также можете использовать класс символов .

^(?=.*ak[12])(?=.*myVar)

Regex demo

1 голос
/ 26 октября 2019

Вы бы использовали AND:

=AND(REGEXMATCH(A2,"(?i)ak(?:1|2)"),REGEXMATCH(A2,"myVar"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...