2016-11-14 4 views
-1

Мне нужно извлечь в синтаксисе RE2 для листов Google запрос, как показано ниже. Проблемы, я должен иметь все между (включая знаки препинания и количество слов) «имя» : « и »},Как найти регулярное выражение в re2 для поиска между строками?

ПРИМЕЧАНИЕ: Это только одна клетка, есть много, как это в моем таблица

interests":[ 
{"id":"1","name":"West Bromwich Albion F.C."}, 
{"id":"2","name":"Tottenham Hotspur F.C."}, 
{"id":"3","name":"Arsenal F.C."}, 
{"id":"4","name":"Liverpool F.C."}, 
{"id":"5","name":"Sunderland A.F.C."}, 
{"id":"6","name":"EPL"},  
{"id":"7","name":"Southampton F.C."}, 
{"id":"8","name":"Manchester United F.C."}, 
{"id":"9","name":"A-League"}, 
{"id":"10","name":"West Ham United F.C."}, 
{"id":"11","name":"Chelsea F.C."}, 
{"id":"12","name":"Burnley Football Club"}, 
{"id":"13","name":"Barclays English Premiership"}, 
{"id":"14","name":"Stoke City F.C."}, 
{"id":"15","name":"Arsenal"}, 
{"id":"16","name":"Crystal Palace F.C."}, 
{"id":"17","name":"Football"}, 
{"id":"18","name":"Aston Villa F.C."}, 
{"id":"19","name":"Norwich City F.C."}, 
{"id":"20","name":"Leicester City F.C."}, 
{"id":"21","name":"Everton F.C."}, 
{"id":"22","name":"Arsenal Fans"}, 
{"id":"23","name":"Manchester City F.C."}]}], 

моя формула

=iferror(REGEXEXTRACT(K98, "name\W:\W(.*?)\W}"), "") 

но он возвращает только один в столбце мне нужно все название футбольного клуба с в той же колонке или отдельно.

я также попытался с помощью

=regexreplace(K98,"^interests\W+id\W\W+\w+\W+name\W:\W(.*?)\W},\W+id\W\W+\w+\W+name\W:\W(.*?)\W},\W+id\W\W+\w+\W+name\W:\W(.*?)\W}]}],$","$1, $2, $3") 

поместить в в том же колонке, но возвращаю ниже (пример)

interests":[{"id":"1","name":"Movies"},{"id":"2","name":"Entertainment"}]}], 

б), когда он не может найти, поэтому я положил REGEXMATCH для каждого (?) все еще читает футляр < - как я могу справиться с (.?)

+0

Проверить [* Как импортировать данные JSON в электронные таблицы Google менее чем за 5 минут *) (https://medium.com/@paulgambill/how-to-import -json-данные-в-Google-таблицы-в-менее, чем 5-й-a3fede1a014a # .7ku2if8fu). –

ответ

1

Вы можете создать 3 группы захвата, а затем использовать REGEXREPLACE, замените строку со второй захвата группы, как это:

=REGEXREPLACE(A2,"({""id"":""\d+"",""name"":"")(.*)(""},)","$2") 

enter image description here

и если вы хотели бы использовать ArrayFormula, просто изменить ссылку на A2:A так:

=ARRAYFORMULA(REGEXREPLACE(A2:A,"({""id"":""\d+"",""name"":"")(.*)(""},)","$2")) 

enter image description here

Чтобы получить их все в одной ячейке, вы можете объединить функцию со следующим:

=join(";",ARRAYFORMULA(REGEXREPLACE(A2:A,"({""id"":""\d+"",""name"":"")(.*)(""},)","$2"))) 

где я использовал ";" как мой разделитель - вы можете эффективно использовать любой разделитель, который вы выберете

+0

Я забыл упомянуть, что мне нужны все они в одной ячейке –

+0

Я обновил ответ, чтобы включить, как использовать функцию соединения для этого –