Я пытаюсь извлечь все адреса ячеек / диапазонов, которые отображаются в формуле в ячейке Google Таблиц.
Формулы по своей природе могут быть очень сложными. Я перепробовал много шаблонов, которые работают в веб-тестерах, но не в Google таблицах re2.
В следующем примере показаны две проблемы. Возможно, я неправильно прочитал результаты сопоставления, но, насколько я понимаю, это 4 совпадения.
Формула (игнорируйте логику):
=A$13:B4+$BC$12+$DE2+F2:G2
Регулярное выражение:
((\$?[A-Z]+\$?\d+)(:(\$?[A-Z]+\$?\d+))?)
Ожидаемый результат:
[A$13:B4,$BC$12,$DE2,F2:G2]
Здесь (если я правильно понимаю результаты) все выглядит нормально. Я не уверен, что отображаемое совпадение групп также считается совпадением, поскольку указано 4 совпадения, 287 шагов
Однако в таблицах Google возвращаются все результаты Match 1
[A$13:B4,A$13,:B4,B4]
Остальные совпадения игнорируются. Думаю, вопрос в том, как преобразовать регулярное выражение в синтаксис re2?
Обновление: после комментариев player0, возможно, я не понял. Это всего лишь простой пример, чтобы выделить другие проблемы, которые у меня есть. Это просто строка, содержащая адреса в нескольких относительных и абсолютных форматах. Однако я ищу более широкое общее решение, которое подходит для любых возможных формул, которые могут содержать формулы и ссылки на другие листы. Например:
=(STDEVA(Sheet1!B2:B5)+sum($A$1:$A$2))*B2
Ожидаемый результат Sheet1!B2:B5,$A$1:$A$2,B2
Эта формула содержит две формулы и ссылку на другой лист. Все еще игнорируя здесь именованные диапазоны и другие возможные ссылки на формулы, о которых я в настоящее время не могу думать. Кроме того, квадратные скобки [] не имеют значения, это был просто способ отображения результатов, и он фактически копируется из журналов, как и все это делается в сценарии.
\$?[A-Z]+\$?\d+(?::(?:\$?[A-Z]+\$?\d+))?
regex101.com/r/A5yKb5/1 - person The fourth bird   schedule 12.08.2020A$13:B4
- person OJNSim   schedule 12.08.2020