РЕГУЛЯРНОЕ ВЫРАЖЕНИЕ для разбора слов из ячейки в таблицах googlesheets

#regex #google-sheets #concatenation #google-sheets-formula #textjoin

#регулярное выражение #google-таблицы #конкатенация #google-таблицы-формула #textjoin

Вопрос:

Надеюсь, кто-нибудь сможет помочь мне с синтаксисом.

Ячейка A1 содержит следующее значение:

 Content Type: Pitch Decks; Region: North America; Content Type: Data Sheet;
  

Я пытаюсь создать формулу, которая анализирует значения между словами "Content Type: " и следующей за ними точкой с запятой.

Итак, в B1 ожидаемый результат формулы должен быть:

 Pitch Decks
Data Sheet
  

(Да, с char(10) разделением значений в B1 )

Я пробовал несколько различных комбинаций REGEXEXTRACT , например:

 REGEXEXTRACT(A11,"Content Type: ([w/s]*);?")
  

..возвращает только:

 Pitch Decks
  

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

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

1. Это было бы очень просто с подстановкой и предварительным просмотром, но Google Sheets, похоже, также не поддерживает предварительные просмотры. Вероятно, вам придется комбинировать регулярное выражение с другими функциями Google Sheets, чтобы находить совпадения и объединять их. К сожалению, у меня нет особого опыта работы с Google Sheets. Надеюсь, кто-то еще собирается вам помочь. Хороший вопрос, хотя; поддержано.

2. Да .. это ставило меня в тупик на 24 часа. Я прочитал 20 различных сообщений stackoverflow по вопросу синтаксического анализа и регулярных выражений .. пробовал их .. но безрезультатно : (

Ответ №1:

Я думал, что это будет легко с заменой и обзором, но оказывается, Google Sheets также не поддерживает поисковые системы. После некоторых исследований я пришел к следующему решению:

 =join(CHAR(10),REGEXEXTRACT(A1,REGEXREPLACE(A1,"(Content Type: )([^;] )","$1($2)")))
  

Это позволит найти все строки, которые идут после «Тип содержимого:» и до следующей точки с запятой или конца строки. Затем оно соединит их с помощью перевода строки. Если вы хотите объединить, используя другой символ, вы можете заменить его CHAR(10) на "," , например, для объединения с запятой.

Вывод:

 Pitch Decks
Data Sheet
  

Ответ №2:

попробуйте:

 =ARRAYFORMULA(SUBSTITUTE(SUBSTITUTE(TRIM(FLATTEN(QUERY(TRANSPOSE(SUBSTITUTE(
 IF(IFERROR(REGEXMATCH(SPLIT(A1:A, ";"), "Content Type")), 
 REGEXEXTRACT(SPLIT(A1:A, ";"), ": (. )"), ), " ", "♥"))
 ,,9^9))), " ", CHAR(10)), "♥", " "))
  

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

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

1. Я не уверен, что понимаю использование специальных символов.. но решение из 41686d6564 выше сделало свое дело. Большое спасибо за вашу помощь!