#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 выше сделало свое дело. Большое спасибо за вашу помощь!