Как заставить функцию REGEXTRACT RegEx из Google Sheets выполнять «жадный» поиск - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь построить шаблон, чтобы выбрать " 1.2. " из " 1.2.3 " (т.е. выбрать каждый ди git и поставить точку перед последним ди git группа) для работы в REGEXEXTRACT функции листа в Google Sheets .

Я придумал шаблон ^([0-9]+\.)+, который предположительно соответствует как Perl, так и Google / re2 Спецификация. Итак, мой код:

=REGEXEXTRACT("1.2.3";"^([0-9]+\.)+")

Я проверил его на https://regexr.com/, где он возвращает " 1.2. " и на https://regex101.com/, где возвращается « 1.2. » как весь результат и « 2. » как группа 1.

Но на Google Sheets, он возвращает только « 2. ».

Я думаю, что он связан либо с:

  1. " ungreedy " оценкой REGEXEXTRACT (что противоречит Google / re2 спецификации;
  2. выше, плюс возвращается только первая группа ;

Я попробовал обходной путь, чтобы выполнить пункт 2 выше. Итак, я изменил шаблон на (^([0-9]+\.)+). Я протестировал его на https://regexr.com/, где он возвращает " 1.2.https://regex101.com/, где он возвращает" 1.2."как весь результат и как группу 1. К сожалению, он вызывает #REF! ошибку в Google Sheets .

Итак, мои вопросы - как сделать жадный выбор самого длинного варианта Подстрока в Google Sheets или наоборот.

Ответы [ 2 ]

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

Посмотрите, поможет ли это

=regexextract("1.2.3","^([0-9.]+)[^\.]+$")

или укажите ссылку на ячейку строкой "1.2.3"

=regexextract(A2, "^([0-9.]+)[^\.]+$")
0 голосов
/ 25 февраля 2020

попробуй:

=REGEXEXTRACT("1.2.3", "^\d+.\d+.")
...