[RÉSOLU] Vérifier la présence d'un mot dans tous les champs

Liste des GroupesRevenir à fcl regexp 
Sujet : [RÉSOLU] 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.regexp
Date : 05. Apr 2022, 16:28:13
Autres entêtes
Organisation : There's no cabale
Message-ID : <t2hn6e$2qb0$1@cabale.usenet-fr.net>
References : 1 2 3
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0 SeaMonkey/2.53.1
Bonjour,

Après vérifications et tests, je confirme que les deux regexp trouvées
fonctionnent comme prévu. Afin que ce groupe conserve un rôle pédago-
gique voici une explication pour chacune.


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[^,]*)*$/

On peut décomposer cette regexp en : /^RE(,RE)*$/
avec : RE=[^,]*cœur[^,]*

Chaque RE correspond à une chaîne de caractères sans aucune virgule
mais contenant au moins une fois le mot cœur.

Quand au test global, il vérifie qu'il y a bien une sous-chaîne de
type RE au début, puis qu'à chaque fois qu'on rencontre une virgule
celle-ci est suivi d'une autre sous-chaîne de type RE, et ce jusqu'à
la fin.


[...] 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))*(,|$)/

Ici, le cœur (sic) de la regexp peut s'écrire :
 /(^|,)([^,])*(,|$)/
voire, encore plus simplement :
 /(^|,)[^,]*(,|$)/

Cette regexp consiste à considérer indépendamment chaque sous-chaîne
délimitée soit par des virgules, soit par le début ou la fin de la
chaîne.
 - à gauche, le début de la chaîne ou une virgule : (^|,)
 - à droite, une virgule ou la fin de la chaîne : (,|$)
 - entre les deux, une séquence de caractères sans virgules : [^,]*

Mais en outre on veut vérifier que nulle part à l'intérieur de cette
sous-chaîne on ne rencontre le mot cœur. Ceci est réalisé par une
assertion à chaque non-virgule (à chaque [^,]) pour vérifier qu'à
cet endroit là ce n'est pas suivi par le mot cœur : (?!cœur).

Le test complet « il y a un caractère qui n'est pas une virgule et
qui n'est pas suivi par le mot cœur » est : ([^,](?!cœur))

Il n'y a plus qu'à le répéter n fois (multiplicateur *) et à
l'insérer entre le test de début et le test de fin de sous-chaîne.


Et voilà ! Encore merci à Otomatic, et à une prochaine fois pour de
nouvelles aventures regexpiennes.

--
Olivier Miakinen

Date Sujet#  Auteur
13 Mar 22 * Vérifier la présence d'un mot dans tous les champs23Olivier Miakinen
13 Mar 22 +* Re: Vérifier la présence d'un mot dans tous les champs3Olivier Miakinen
14 Mar 22 i`* Re: Vérifier la présence d'un mot dans tous les champs2Olivier Miakinen
5 Apr 22 i `- [RÉSOLU] Vérifier la présence d'un mot dans tous les champs1Olivier Miakinen
14 Mar 22 `* Re: Vérifier la présence d'un mot dans tous les champs19Otomatic
14 Mar 22  `* Re: Verifier la presence d'un mot dans tous les champs18Olivier Miakinen
14 Mar 22   +* Re: Verifier la presence d'un mot dans tous les champs2Otomatic
14 Mar 22   i`- Re: Verifier la presence d'un mot dans tous les champs1Olivier Miakinen
11 Jun 22   `* Re: Verifier la presence d'un mot dans tous les champs15Dominique
11 Jun 22    `* Re: Verifier la presence d'un mot dans tous les champs14Olivier Miakinen
28 Feb 23     `* Re: Verifier la presence d'un mot dans tous les champs13"Benoît L."
28 Feb 23      `* Re: Verifier la presence d'un mot dans tous les champs12Olivier Miakinen
28 Feb 23       `* Re: Verifier la presence d'un mot dans tous les champs11"Benoît L."
28 Feb 23        +* Re: Verifier la presence d'un mot dans tous les champs3Olivier Miakinen
28 Feb 23        i`* Re: Verifier la presence d'un mot dans tous les champs2"Benoît L."
28 Feb 23        i `- Re: Verifier la presence d'un mot dans tous les champs1Olivier Miakinen
1 Mar 23        `* Re: Verifier la presence d'un mot dans tous les champs7Olivier Miakinen
1 Mar 23         `* Re: Verifier la presence d'un mot dans tous les champs6Olivier Miakinen
1 Mar 23          `* Re: Verifier la presence d'un mot dans tous les champs5"Benoît L."
1 Mar 23           `* Re: Verifier la presence d'un mot dans tous les champs4André Favre
1 Mar 23            `* Re: Verifier la presence d'un mot dans tous les champs3"Benoît L."
1 Mar 23             +- Re: Verifier la presence d'un mot dans tous les champs1André Favre
2 Mar 23             `- Re: Verifier la presence d'un mot dans tous les champs1M.V.

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal