Sujet : Re: Vérifier la présence d'un mot dans tous les champs
De : om+news (at) *nospam* miakinen.net (Olivier Miakinen)
Groupes : fr.comp.lang.regexpDate : 14. Mar 2022, 22:20:17
Autres entêtes
Organisation : There's no cabale
Message-ID : <t0o822$2mlv$1@cabale.usenet-fr.net>
References : 1 2
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0 SeaMonkey/2.53.1
Salut,
Je pense avoir trouvé pour les deux versions.
Le 13/03/2022 à 20:28, je me répondais :
Dans une phrase comportant plusieurs mots séparés entre autres par des
virgules, je voudrais vérifier qu'un mot en particulier se trouve dans
chaque partie de la phrase.
La regexp suivante semble convenir :
/^[^,]*cœur[^,]*(,[^,]*cœur[^,]*)*$/
Elle a pour défaut de devoir écrire deux fois la chaîne à tester,
ici « cœur », mais elle n'a pas besoin de règles complexes telles
que les assertions.
J'ai peut-être une idée pour ça, et d'ailleurs j'ai posé la question
sous cette forme parce qu'elle me paraît un peu plus facile que ma
question d'origine qui est le contraire : vérifier qu'il existe au
moins l'une des parties de la phrase ne contenant *pas* ce mot.
Pour cette version, la regexp suivante a l'air d'aller :
/(^|,)([^,](?!cœur))*(,|$)/
Là au contraire j'ai besoin d'une assertion, mais la chaîne à tester
n'a besoin d'être écrite qu'une seule fois. Cela évite d'avoir à la
modifier à plusieurs endroits lors des phases de tests, ce qui évite
donc le risque de ne pas la modifier partout pareil.
Merci à Otomatic qui a tenté de m'aider, et... merci à moi pour
avoir finalement trouvé une solution. ;-)
-- Olivier Miakinen