2016-11-14 2 views
-1

Je dois extraire dans la syntaxe RE2 pour les feuilles de Google une requête comme ci-dessous. Les problèmes est que je dois avoir tout entre (y compris la ponctuation et la quantité de mots) « name »: « et »},Comment trouver une regex dans re2 pour rechercher entre les chaînes?

NOTE: Ceci est une seule cellule, il y a beaucoup comme ça dans mon tableur

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."}]}], 

ma formule est

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

mais il retourne seul dans la colonne que je besoin de tout le nom du club de football s dans la même colonne ou séparément.

J'ai aussi essayé d'utiliser

=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") 

à placer dans la même colonne, mais renvoie le ci-dessous (exemple)

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

b) quand il ne peut pas trouver, donc je mis un regexmatch pour chaque cas mais le (. ?) lit toujours le cas < - comment puis-je traiter le (.?)

+0

Cochez [* Comment importer des données JSON dans Google Spreadsheets en moins de 5 minutes *] (https://medium.com/@paulgambill/how-to-import -json-data-into-google-tableurs-en-moins de 5 minutes-a3fede1a014a # .7ku2if8fu). –

Répondre

1

Vous pouvez créer 3 groupes de capture, puis en utilisant REGEXREPLACE, remplacez la chaîne avec le deuxième groupe de capture comme ceci:

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

enter image description here

et si vous souhaitez utiliser ARRAYFORMULA, il suffit de changer la référence à A2:A comme ceci:

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

Pour obtenir tous dans une cellule, vous pouvez envelopper la fonction avec jointure comme:

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

où j'ai utilisé le ";" en tant que délimiteur - vous pouvez utiliser efficacement n'importe quel délimiteur que vous choisissez

+0

j'ai oublié de mentionner que j'ai besoin d'eux tous dans la même cellule –

+0

J'ai mis à jour la réponse pour inclure comment utiliser la fonction de jointure pour le faire –