[Help] Regex GSheets colonne multiple / Extract contact info Open AI

Hello la commu’ :v:,

J’ai un jeu de données que j’ai scrapé, malheureusement la récupération n’a pu se faire de manière standardisée, j’ai donc pour chaque ligne des e-mails et numéro de téléphone dans des colonnes différentes à chaque fois.

J’ai tenté un Regex (mail) sur une colonne (qui fonctionne) :
=SIERREUR(Regexextract(N30;"[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}");"")
OU
=Regexextract(N30;"[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}")

Quand je tente une récupération sur plusieurs colonnes (D30:Z30) ou (30:30) par exemple, j’ai une erreur. Connaissez-vous la formule qui me permettrait de faire cela ?

Je compte faire la même chose avec le numéro de téléphone, le code postal
Et si possible le Nom + Prénom, sans grande conviction sur ce point avec les Regex, j’ai donc tenté de voir avec Open Ai et c’est plutôt bluffant sur le petit test… (voir capture 2), mais ça serait sortir l’artillerie lourde… et je ne suis pas méga à l’aise avec les API.

Capture 1 :

Capture 2 :

Essaye en local avec la fonction regexfind de seotools : Extract strings with Regex in Excel

Sinon pour spreadsheet, je pense que @cebri peut aider.

1 « J'aime »

Salut @Kevin-Zimmermann
tu peux partager 2-3 lignes dans un autre gsheet ? histoire de mieux comprendre le probleme. Je regarde et te propose qqch ds la foulée

1 « J'aime »

@cebri,
Je te MP, merci à toi, j’ai fait ça comme un bourrin :sweat_smile:

Si jamais tu trouves pas t’as solution avant, je pourrais essayer de t’aider demain… j’me débrouille pas mal en gsheet :wink:

1 « J'aime »

@Kevin-Zimmermann tu veux extraire les emails contenu dans une cellule avec un regex?

Check cette formule:

A1 c’est la cellule ou se trouve ta data:

=iferror(Regexextract(A1;"[A-z0-9._%±]+@[A-z0-9.-]+.[A-z]{2,4}");"")

Ça c’est pour les emails (la même formule que toi en fait)

Pour les téléphones, quand tu double clique sur la cellule il se peut que ça soit un problème courant de formatage. Par exemple avec les numéros commençant par « + », fais un search replace pour dégager ce caractère et les numéros apparaîtront normalement.

Dans la video ci-dessus je fais ça dans des groupes Facebook rental et immo (courte video sans son):

Jette moi un extrait du fichier si besoin je vais check.

2 « J'aime »

Je me suis mal exprimé, je cherche à faire un Regex sur un range de column, dans ton exemple tu fais un exemple sur la colonne D2.

J’essaye d’extraire les e-mails qui se sont mis de manière un peu aléatoire dans différentes colonnes.
Par rapport à ton exemple, c’est comme si j’essayais de le faire sur A2,B2,C2,D2.

Merci en tout cas @amz :wink:

« Less is more » les amis, j’ai fait ça à l’arrache avec des « & », mais ça fera le travail :

=SIERREUR(Regexextract(E30&F30&G30&H30&I30&J30&K30&L30&M30&N30&O30&P30&Q30&R30&S30&T30&U30&V30&W30&X30&Y30&Z30;"[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,3}"))

Merci à vous tous :v:

1 « J'aime »

Ce que j’allais t’écrire lol

« pourquoi ne concatenes tu pas tout le range une seule colonne puis applique le regex? A moins que tu ai plusieurs emails dans une seule cellule? ou plusieurs emails par cellule? »

D’ailleurs est-ce que ta formule te permet aussi d’extraire plusieurs emails dans une même cellule ou ou tu avais un email par cellule? Maintenant je me pose la question comment faire… :thinking:

En fait j’ai trouvé, si tu as plusieurs emails dans une cellule cette formule marche bien:

=ARRAYFORMULA(TEXTJOIN(", « ,1,IFERROR(REGEXEXTRACT(SPLIT(A1, » « ), »([a-z0-9’.-]+?@[a-z0-9.-]+?.[a-z]{2,3})"),"")))

et ça t’ajoute le délimiteur pour séparer les email par la suite. Donc tu peux tout concatener ton range de colonnes dans une cellule d’abord, puis appliquer la formule à la concaténation.

Dans l’exemple ci dessous, la data concaténée est en C1.

Que ferait-on sans Stackoverflow, sérieux :sweat_smile: C’est puissant les regex bordel…

3 « J'aime »

J’avoue que je n’ai pas pensé à concat… :sweat_smile: On sent le débutant ahah.
J’avais vu passer la formule dont tu parles, j’ai même de quoi répondre à des problématiques futures.

Merci @amz :pray:

1 « J'aime »

Plutot qu’un concat, tu devrais faire un join avec un séparateur entre 2 colonnes. Sinon ta regex risque de matcher des chaines de caracteres issues de la jointure de plusieurs colonnes.

en gros, avant:

colonne 1 colonne 2 merge avec concat merge avec join(", ")
email: email@domain.com blabla email: email@domain.comblabla email: email@domain.com, blabla

dans cet exemple, l’email avec concat que la regex va t’extraire sera

email@domain.comb

tandis que celui avec join sera

email@domain.com

3 « J'aime »