Как извлечь первые 20 с лишним слов из текстовой строки в Google листе

#regex #google-apps-script #google-sheets

Вопрос:

Я хочу извлечь первые 22 слова из текстовой строки в столбце А в таблице Google.

вот URL-адрес Google листа Google листа

Я использовал следующую формулу на A2 в приведенном выше листе Google

 =regexextract(A2,"[w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]*")
 

Но ячейка B2 выдает следующую ошибку

 Function REGEXEXTRACT parameter 2 value "[w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]* [w]*" does not match text of Function REGEXEXTRACT parameter 1 value "Immediate Hiring ! ! Position Business Development Manager Location Dubai Industry Contracting Req Must have minimum 10  years of UAE sales management Gender Male Preferred Nationality Pakistani Salary AED 10000-15000Send CV to  with Sub of email as " BDM " . NB This is one of the clients requirements. The above details are as specified by the".
 

Как извлечь первые 22 слова из каждой ячейки в столбце и показать в столбце B соответствующую ячейку

приветствуется любое решение, основанное на коде, или любое решение, основанное на формулах.

Ответ №1:

Воспользуйся

 =regexextract(A2,"w (?:W w ){21}")
 

См.Доказательство регулярного выражения.

объяснение

 --------------------------------------------------------------------------------
  w                       word characters (a-z, A-Z, 0-9, _) (1 or
                           more times (matching the most amount
                           possible))
--------------------------------------------------------------------------------
  (?:                      group, but do not capture (21 times):
--------------------------------------------------------------------------------
    W                       non-word characters (all but a-z, A-Z, 0-
                             9, _) (1 or more times (matching the
                             most amount possible))
--------------------------------------------------------------------------------
    w                       word characters (a-z, A-Z, 0-9, _) (1 or
                             more times (matching the most amount
                             possible))
--------------------------------------------------------------------------------
  ){21}                    end of grouping
 

Комментарии:

1. Спасибо , это решение работает для меня

Ответ №2:

Если вы не возражаете использовать пользовательскую функцию, вот вам:

 function GET22WORDS(cell) {
  return cell.match(/w{3,}/g).slice(0,22).join('n');
}
 

введите описание изображения здесь

Ответ №3:

Попробуй

 =QUERY(iferror(flatten(arrayformula(regexextract((split(A2," ")amp;" "),"[w]{3,} ")))),"select * where Col1 is not null limit 22")
 

Я ограничиваюсь значимыми словами, размер которых превышает или равен 3 символам. Или

 =TEXTJOIN(char(10),,QUERY(iferror(flatten(arrayformula(regexextract((split(A1," ")amp;" "),"[w]{3,} ")))),"select * where Col1 is not null limit 20"))
 

введите описание изображения здесь

Комментарии:

1. это дает только одно слово в качестве вывода

2. вовсе нет, я дам вам снимок экрана

3. Да, теперь это работает