J'ai une question étrange à propos de Google Sheets.
Premièrement, voici ce que j’ai eu jusqu’à présent, mais une erreur "Fonction REGEXEXTRACT, paramètre 2" Mon texte ici "n’est pas une expression régulière valide, est renvoyée."
=IF(REGEXEXTRACT(W8, $Y$1), SUBSTITUTE(W8,$Y$1, ""),
IF(REGEXEXTRACT(W8, $Y$2), SUBSTITUTE(W8,$Y$2, ""),
IF(REGEXEXTRACT(W8, $Y$3), SUBSTITUTE(W8,$Y$3, ""),
IF(REGEXEXTRACT(W8, $Y$4), SUBSTITUTE(W8,$Y$4, ""), ""
)
)
)
)
Essentiellement, je souhaite vérifier si une cellule contient du texte, avec des résultats différents en fonction du texte trouvé. J'ai 4 possibilités de ce qu'il pourrait trouver, disons qu'il cherche Abc, def, ghi, jkl dans une ligne de texte. Lorsqu'il voit abc, il regarde W8 et remplace le texte correspondant dans W8 par $ Y $ 1. S'il voit def, il regarde W8 et remplace le texte correspondant dans W8 par $ Y $ 2. Etc. Etc. Etc. Et puis, idéalement, le symbole est vide s'il ne trouve aucun de ceux-ci.
J'ai l'impression d'être sur le point de bien faire les choses, mais je ne peux tout simplement pas le voir.
Éditer
J'ai ajouté la fonction istext à celui-ci, et le message d'erreur est supprimé, mais maintenant, il ne fait que retourner un blanc.
=IF(ISTEXT(regexextract(W8, $Y$1)), SUBSTITUTE(W8,$Y$1, ""),
IF(ISTEXT(regexextract(W8, $Y$2)), SUBSTITUTE(W8,$Y$2, ""),
IF(ISTEXT(regexextract(W8, $Y$3)), SUBSTITUTE(W8,$Y$3, ""),
IF(ISTEXT(regexextract(W8, $Y$4)), SUBSTITUTE(W8,$Y$4, ""), ""
)
)
)
Edit 2
Par souci de clarté, j'inclus ce que chacune des cellules que je modifie est la suivante:
W8: valeur:=SUBSTITUTE(C8,V8, "")
Text:/slideshows/blah-blah.html?utm_source=naytev&utm_campaign=ab&utm_medium=cwpg&utm_term=paid
$ Y $ 2: ?utm_source=naytev&utm_campaign=ab&utm_medium=cwpg&utm_term=paid
EDIT
J'ai condensé mon problème en une seule ligne, pour le simplifier davantage: =IF(ISTEXT(REGEXMATCH(W8, $Y$2)), SUBSTITUTE(W8,$Y$2, ""), "00")
Returns 00
W8: ... texte
/slideshows/blah-blah.html?utm_source=naytev&utm_campaign=ab&utm_medium=cwpg&utm_term=paid
$ Y $ 2:?utm_source=naytev&utm_campaign=ab&utm_medium=cwpg&utm_term=paid
La formule ne fonctionne pas car, parmi d'autres causes possibles, les valeurs de W8 et $ Y $ 2 ne sont pas des expressions régulières valides. Les deux ressemblent à des parties d'une URL et incluent des caractères qui, dans une expression régulière, ont une signification particulière.
Comme mentionné dans un commentaire à cette réponse à la place des fonctions d’expression régulière, vous pouvez utiliser FIND ou SEARCH , ce qui pourrait être la solution à jeun (et plus facile?) postuler.
Le message d'erreur initial implique qu'au moins une des valeurs suivantes: $ Y $ 1, $ Y $ 2, $ Y $ 3, $ Y $ 4 ne sont pas des expressions régulières valides.
De REGEXEXTRACT
Syntaxe
REGEXEXTRACT (text, regular_expression)
text - Le texte saisi.
regular_expression - La première partie du texte correspondant à cette expression sera renvoyée.
Remarques
- Les produits Google utilisent RE2 pour expressions régulières . En savoir plus sur l'utilisation de expressions RE2 .
- Cette fonction ne fonctionne qu'avec du texte (pas des chiffres) en entrée et renvoie du texte en sortie. Si vous souhaitez utiliser un nombre comme sortie, essayez d’utiliser la fonction VALUE avec cette fonction. Si des nombres sont utilisés en entrée, convertissez-les en texte à l'aide de la fonction TEXT.
Il est intéressant de noter que, lorsque nous travaillons avec des fonctions imbriquées et qu’une formule volumineuse ne fonctionne pas, il est judicieux de tester chaque partie individuellement, c’est-à-dire de valider que la ou les valeurs de chaque argument de chaque fonction sont valides et de bonne qualité. le bon type.
H/T à un utilisateur qui utilise pour changer son nom d'affichage à tout moment et qui a posté cette réponse
Les réponses précédentes étaient justes. Votre expression régulière contient des caractères vagues comme ?
, ce qui voudrait dire différentes choses dans une expression régulière. Heureusement, re2 prend en charge le texte littéral.
\Q...\E
Tout ce qui est écrit entre Q et E est pris littéralement.
Si
A1:
/slideshows/blah-blah.html?utm_source=naytev&utm_campaign=ab&utm_medium=cwpg&utm_term=paid
A2:
?utm_source=naytev&utm_campaign=ab&utm_medium=cwpg&utm_term=paid
A3:
=IF(REGEXMATCH(A1,"\Q"&A2&"\E"),SUBSTITUTE(A1, A2,""))
Valeur A3: /slideshows/blah-blah.html