Как регулярное выражение Извлекает целые слова, содержащие смесь текста и цифр, в таблицах Google

#google-sheets

#google-sheets

Вопрос:

Я пытаюсь заставить эту формулу работать для смеси текста и чисел. Это работает для текста, содержащего только 4 числа. Как я могу манипулировать этим, чтобы соответствовать определенным словам, например Text Text 50 , или даже. random 2020 text

Мне нужно жестко закодировать слова в формуле или использовать КОСВЕННУЮ ссылку на ячейку.

Формула, которую я получил.

 =ArrayFormula(IF(A:A="",,TRIM(IFERROR(REGEXEXTRACT(A:A,"^([øa-zA-Z-/ ] )"))amp;IFERROR(REGEXEXTRACT(A:A," [0-9]{4}")))))
 

Я хочу, чтобы формула извлекала эти конкретные слова такими, какие они есть, без их обрезки. Эта формула работает для других строк, кроме тех, которые представляют собой смесь чисел и текста.

Я попытался отредактировать свою формулу следующим образом, но мне это не удалось.

 =ArrayFormula(IF(A:A="",,TRIM(IFERROR(REGEXEXTRACT(A:A,"^([[:Text Text 50:]][[:random 2020 text:]][øa-zA-Z-/ ] )"))amp;IFERROR(REGEXEXTRACT(A:A," [0-9]{4}")))))
 

Ссылка на мою электронную таблицу — https://docs.google.com/spreadsheets/d/1BYW-QzqRA8vIBWazDSZhbUZ_TCbVAPYSI-1hFthfrew/edit?usp=sharing

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

1. Не могли бы вы добавить, пожалуйста, как вы хотите, чтобы выглядели результаты?

2. Так же, как вы используете d для указания цифр 0-9, мне нужно указать конкретное слово, которое после нахождения должно быть возвращено как есть. Например, из моего примера выше формула должна возвращать Text Text 50 и random 2020 text как только найдено. Так что это все равно, что использовать целое слово в качестве разделителя, если это имеет смысл.

3. Эта формула =ARRAYFORMULA(IFERROR({REGEXEXTRACT(A1:A,"AC Text 1921"),REGEXEXTRACT(A1:A,"B93 Random"),REGEXEXTRACT(A1:A,"Other 1345 text..")})) , похоже, работает, за исключением того, что она помещает результаты в последующие ячейки вместо ячейки, в которой есть формула. Как это преодолеть?

Ответ №1:

Если вы вводите искомые тексты в отдельный столбец (скажем, в E1:E3 ), вы можете использовать эту формулу:

 =IFERROR(ArrayFormula(REGEXEXTRACT(A:A,JOIN("|",E1:E3))),"")
 

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

Если вам нужен жесткий код, просто используйте:

 =IFERROR(ArrayFormula(REGEXEXTRACT(A:A,"AC Reggiana 1919|B93 Copenhagen|Etar 1924 Veliko T..")),"")