Plus ou moins.
Comme je ne peux apparemment pas éditer le premier message pour mettre le tableau, préciser la demande, qu’il y avait pas mal de spams et pas de réponse concluantes, il fallait bien que je fasse quelque chose.
REGEX(B2,"[Cuisse]?[poulet]?";;"g")
Cette regex retournera TRUE
à condition que la cellule de recherche contienne, peu importe sa position dans la cellule, soit Cuisse, soit poulet, soit les deux. Ainsi, si on applique cette regex à une cellule contenant poulet, cuisse, alors elle sera incluse dans les résultats.
REGEX(B2,"[Fraise?]?";;"g")
Cette regex, retournera, comme ci-dessus, TRUE
si elle est appliquée à une cellule contenant le mot Fraise, ou le mot Fraises, ou le mot Fraisee. Le ? en regex signifie 0 ou 1. Dans ce cas-ci, 0 ou 1 caractère à la fin de Fraise, et le terme nouvellement crée, 0 ou 1 fois.
REGEX(B2,"[Tarte aux pomme]*";;"g")
Cette regex retournera TRUE
si elle est appliquée à une cellule contenant la séquence de mot suivante “Tarte aux pommes” suivie de n’importe quelle autre séquence, 0 ou plusieurs fois, de mots. Ainsi, elle retournera TRUE
aux séquences suivantes :
“Tarte aux pomme”
“Tarte aux pommes”
“Tarte aux pommes de route”
“Tarte aux pommes caramélisées”
“Tarte aux pommes 9as8d7fa8s9dfaW$#WR AD3@@”
“pas encore une Tarte aux pomme”
mais elle retournera FALSE
aux séquences suivantes :
“Tarte au pommes”
“Tarte au pomme”
Pour que les 2 séquences ci-dessus soient incluses, alors il faut avoir comme regex ce qui suit :
REGEX(B2, "[Tarte au? pomme]*";;"g"
Je comprends la formule, cependant si je dois à chaque fois modifier la formule en fonction de ce que je cherche ça ne me fera pas gagner tellement de temps.
Est ce qu’on peut faire une ligne intermédiaire qui sépare toute seule les mots puis un regex?
On pourrait même faire une ligne qui sépare les mots, une ligne qui met tout au singulier puis un regex avec ? pour avoir le singulier et le pluriel ?
@chris.the.webber Tes formules ne font pas ce que tu crois, ce que tu veux est:
=REGEX(B2,".*(Tarte aux? pomme).*";;"g")
Pas de différence(s) ici :
Pas de différence(s) ici :
Les [square] parenthèses ont une signification différente de ce que tu crois !
`=REGEX($A2;"[aeoulprstx]"; ;g ) | =REGEX($A2;"[[tarte]?[aux]?[poulets]?]"; ;g ) | =REGEX($A2;"[aeoulprstx]+"; ;g ) | |
---|---|---|---|
Januar | a | a | a |
Februar | e | e | e |
März | r | r | r |
April | p | p | pr |
Mai | a | a | a |
Juni | u | u | u |
Juli | u | u | ul |
August | u | u | u |
September | e | e | epte |
Oktober | t | t | to |
November | o | o | o |
Montag | o | o | o |
Dienstag | e | e | e |
Mittwoch | t | t | tt |
Donnerstag | o | o | o |
Freitag | r | r | re |
Samstag | a | a | a |
Sonntag | o | o | o |
Ce lien explique ce qu’est une REGEX, comment elle fonctionne dans LO
https://help.libreoffice.org/latest/en-US/text/scalc/01/func_regex.html?&DbPAR=CALC&System=WIN
Tandis que ce lien explique la syntaxe d’une REGEX (par exemple, le + signifie 1 ou plus d’une fois, le ? signifie 0 ou 1 fois, le * pour 0 ou plus d’une fois, …)
https://help.libreoffice.org/latest/en-US/text/shared/01/02100001.html?&DbPAR=CALC&System=WIN
[quote=“Mr-Boutindou, post:12, topic:112848, full:true”]
Est ce qu’on peut faire une ligne intermédiaire qui sépare toute seule les mots puis un regex?[/quote]
Probablement que oui, mais je ne sais pas faire une REGEX qui sépare tous les mots contenus dans chacune des cellules d’une même colonne, qui utilisera ensuite chacun de ces mots pour créer une autre REGEX qui sera appliquée sur les mêmes données. De plus, selon mes connaissances, REGEX cessera le travail de recherche aussitôt qu’il aura obtenu une valeur TRUE, ou qu’il aura parcouru toute les données a parcourir. Ainsi, la REGEX
REGEX(B2,"[Cuisse]?[poulet]?";;“g”)
retournera TRUE à Cuisse et ne cherchera pas poulet dans la ligne de recherche suivante, même s’il s’y trouve :
Cuisse de poulet brûlée au gingembre.
On pourrait même faire une ligne qui sépare les mots, une ligne qui met tout au singulier puis un regex avec ? pour avoir le singulier et le pluriel ?
C’est déjà fait avec l’opérateur ?, mais ce n’est pas affiché.
ok, mais je ne peux pas laisser ta formule à demeure et mettre à chaque fois un autre élément. Je suis obligé de changer la formule à chaque fois. ça je ne veux pas.
Si en A1 on a “tarte aux poulets”
il faudrait diviser la cellule en B pour avoir B1 “tarte” B2 “aux” B3 “poulets”
Et ensuite faire REGEX(A1,"[B1]?[B2]?"[B3]?";;“g”) —> (j’ai pas vérifié la syntaxe)
C’est infaisable?
Je suis obligé de changer la formule à chaque fois
Oui. Il n’existe pas de formule universelle qui retournera un résultat précis parmis tant d’autres qui soit différent d’une recherche à l’autre.
REGEX(B2;"[[tarte]?[aux]?[poulets]?]?”;;"g")
retournera TRUE uniquement aux cellules de recherches contenant :
“tarte”
“tarte aux”
“tarte poulets”
“tarte aux poulets”
“aux”
“aux poulets”
“poulets”
et FALSE aux autres cellules contenant du texte et appartenant à la plage de recherche.
Enfin, il y a * mais il retournera tous les résultats à chaque fois.
REGEX(B2;"[[tarte]?[aux]?[poulets]?]?”;;“g”)
Je suis un peu perdu…
Sur l’onglet “conversion recette” je dois mettre l’ingrédient et il doit chercher dans “cuisine” l’ingrédient correspondant… mais au final ta formule ne contient pas le changement d’onglet?
le regex va chercher si B2 contient les mots “tarte” “aux” “poulet” n’est ce pas? Si oui, je ne comprends pas comment ça peut résoudre le soucis
le regex va chercher si B2 contient les mots “tarte” “aux” “poulet” n’est ce pas?
Oui… et en plus, plus de 90% des mots français possibles !!!
En d’autres termes, la regex matte tout ce qui contient au moins une de ces lettres : »aeolprstux«.
Donc… ce n’est pas la formule dont j’ai besoin?
Une autre suggestion?
Quelqu’un a une idée pour moi svp?
Quelqu’un peut m’aider svp?