листы Google regextract nth возникновение на новой строке - PullRequest
1 голос
/ 04 ноября 2019

Пример данных (все в одной ячейке гугл листа)

Test# 123
Bob# abc
how are you doing
John# test
... # ...

Моя цель - вернуть все после третьего #, поэтому в этом примере "test" я возился с большим количеством примеров в Интернете, но оникажется, по какой-то причине несовместимым с версией regextract для листов Google.

Я могу использовать (\ n. *) {4}, чтобы вернуть четвертую строку, но это не очень хорошо, потому что, как вы можете видеть изпример данных Я не знаю, сколько строк данных будет между # и также не извлекается из #, не говоря уже о третьем #.

Цель: извлечь третий # до конца строки, включаяили исключение # будет делать.

Вот идея, которая у меня есть, но наверняка формат полностью разделан ((\ n) (? = #. *)) {3} Я ожидаю, что это регулярное выражение захватиттретий # ЕСЛИ это было начало строки, но я не могу даже заставить эту работу, не говоря уже о том, чтобы это происходило в середине строки, как было в моем примере.

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

также работает:

=REGEXEXTRACT(INDEX(SPLIT(A1, "#"),,4), " (.+)")

0

1 голос
/ 04 ноября 2019

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

=REGEXEXTRACT(A1, "^(?:[^#]*#){3}(.+)")

Для получения всего текста с 3-го по 4-й # символ:

=REGEXEXTRACT(A1, "^(?:[^#]*#){3}([^#]+)")

Подробности

  • ^ - начало строки
  • (?:[^#]*#){3} - три вхождения 0+ символов, отличных от #, а затем # ((?:...) - это группа без захвата,он необходим для группировки последовательности шаблонов без необходимости возврата текста, которому соответствует этот шаблон группы)
  • (.+) - Захват группы 1 (REGEXEXTRACT возвращает текст, захваченный в группу, только если группауказано): любые 1+ символов, кроме символов разрыва строки
  • ([^#]+) - это захватывает в группу 1 любой один или несколько символов, кроме #.

enter image description here

...