#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. Да, теперь это работает