Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.regexp > #150 > unrolled thread
| Started by | Olivier Miakinen <om+news@miakinen.net> |
|---|---|
| First post | 2022-03-13 19:18 +0100 |
| Last post | 2023-03-02 09:29 +0000 |
| Articles | 20 on this page of 24 — 6 participants |
Back to article view | Back to fr.comp.lang.regexp
Vérifier la présence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2022-03-13 19:18 +0100
Re: Vérifier la présence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2022-03-13 20:28 +0100
Re: Vérifier la présence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2022-03-14 21:20 +0100
[RÉSOLU] Vérifier la présence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2022-04-05 17:28 +0200
Re: Vérifier la présence d'un mot dans tous les champs Otomatic <otomatic@oto.invalid> - 2022-03-14 10:21 +0100
Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2022-03-14 10:47 +0100
Re: Verifier la presence d'un mot dans tous les champs Otomatic <otomatic@oto.invalid> - 2022-03-14 17:06 +0100
Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2022-03-14 18:08 +0100
Re: Verifier la presence d'un mot dans tous les champs Dominique <zzz@aol.com.invalid> - 2022-06-11 06:35 +0200
Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2022-06-11 10:48 +0200
Re: Verifier la presence d'un mot dans tous les champs "Benoît L." <benoit@leraillez.com.invalid> - 2023-02-28 13:26 +0000
Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-02-28 14:40 +0100
Re: Verifier la presence d'un mot dans tous les champs "Benoît L." <benoit@leraillez.com.invalid> - 2023-02-28 14:33 +0000
Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-02-28 19:06 +0100
Re: Verifier la presence d'un mot dans tous les champs "Benoît L." <benoit@leraillez.com.invalid> - 2023-02-28 22:12 +0000
Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-02-28 23:50 +0100
Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-02-28 23:59 +0100
Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-03-01 00:04 +0100
Re: Verifier la presence d'un mot dans tous les champs Olivier Miakinen <om+news@miakinen.net> - 2023-03-01 00:15 +0100
Re: Verifier la presence d'un mot dans tous les champs "Benoît L." <benoit@leraillez.com.invalid> - 2023-03-01 00:03 +0000
Re: Verifier la presence d'un mot dans tous les champs andre_favre@af.invalid (André Favre) - 2023-03-01 09:27 +0100
Re: Verifier la presence d'un mot dans tous les champs "Benoît L." <benoit@leraillez.com.invalid> - 2023-03-01 10:29 +0000
Re: Verifier la presence d'un mot dans tous les champs andre_favre@af.invalid (André Favre) - 2023-03-01 17:36 +0100
Re: Verifier la presence d'un mot dans tous les champs "M.V." <mv@gmail.com.invalid> - 2023-03-02 09:29 +0000
Page 1 of 2 [1] 2 Next page →
| From | Olivier Miakinen <om+news@miakinen.net> |
|---|---|
| Date | 2022-03-13 19:18 +0100 |
| Subject | Vérifier la présence d'un mot dans tous les champs |
| Message-ID | <t0lcik$1616$1@cabale.usenet-fr.net> |
Bonjour, D'habitude c'est le plus souvent moi qui donne la solution à un problème de regexp, mais pour une fois c'est moi qui ai besoin d'aide. 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. Par exemple, pour le mot cœur, cette phrase serait valide : Pour parler à cœur ouvert, cœur à cœur, je mets du cœur à l'ouvrage, même si ce n'est pas de gaieté de cœur. En revanche celle-ci ne serait pas valide : Pour parler à cœur ouvert, cœur à cœur, je mets beaucoup de courage, même si ce n'est pas de gaieté de cœur. En effet, il n'y a nulle part le mot cœur entre la deuxième virgule et la troisième virgule. Je précise que ma variété de regexp est celle de Perl ou de PCRE (Perl-compatible regular expressions). Merci de votre aide ! -- Olivier Miakinen
[toc] | [next] | [standalone]
| From | Olivier Miakinen <om+news@miakinen.net> |
|---|---|
| Date | 2022-03-13 20:28 +0100 |
| Message-ID | <t0lgks$192t$1@cabale.usenet-fr.net> |
| In reply to | #150 |
Le 13/03/2022 à 19:18, Olivier Miakinen j'écrivais : > > 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. 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. > Par exemple, pour le mot cœur, cette phrase serait valide : > > Pour parler à cœur ouvert, cœur à cœur, je mets du cœur à l'ouvrage, > même si ce n'est pas de gaieté de cœur. Dans mon problème d'origine la phrase ne serait justement pas valide. > En revanche celle-ci ne serait pas valide : > > Pour parler à cœur ouvert, cœur à cœur, je mets beaucoup de courage, > même si ce n'est pas de gaieté de cœur. Mais cette autre phrase le serait, grâce au segment « je mets beaucoup de courage » qui ne contient pas le mot « cœur ». -- Olivier Miakinen
[toc] | [prev] | [next] | [standalone]
| From | Olivier Miakinen <om+news@miakinen.net> |
|---|---|
| Date | 2022-03-14 21:20 +0100 |
| Message-ID | <t0o822$2mlv$1@cabale.usenet-fr.net> |
| In reply to | #151 |
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
[toc] | [prev] | [next] | [standalone]
| From | Olivier Miakinen <om+news@miakinen.net> |
|---|---|
| Date | 2022-04-05 17:28 +0200 |
| Subject | [RÉSOLU] Vérifier la présence d'un mot dans tous les champs |
| Message-ID | <t2hn6e$2qb0$1@cabale.usenet-fr.net> |
| In reply to | #156 |
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
[toc] | [prev] | [next] | [standalone]
| From | Otomatic <otomatic@oto.invalid> |
|---|---|
| Date | 2022-03-14 10:21 +0100 |
| Subject | Re: Vérifier la présence d'un mot dans tous les champs |
| Message-ID | <dg1u2h9ms324so97iqqac5jfclhunbt5u0@4ax.com> |
| In reply to | #150 |
Olivier Miakinen <om+news@miakinen.net> écrivait :
> D'habitude c'est le plus souvent moi qui donne la solution à un problème
> de regexp, mais pour une fois c'est moi qui ai besoin d'aide.
Et c'est bien vrai ça !
Dans un tel cas, je ne chercherais pas une regexp, mais plutôt une
fonction avec explode pour séparer la phrase en segments et vérifier
dans chaque segment la présence ou non du mot.
En PHP :
> function trouve_mot($phrase,$mot) {
> $phrase_explode = explode(',',$phrase);
> foreach($phrase_explode as $value) {
> if(strpos($value,$mot) === false) {
> return false;
> break;
> }
> }
> return true;
> }
--
Un ordinateur résout des problèmes que nous n'aurions pas sans lui
Technique aéronautique : http://aviatechno.net
[toc] | [prev] | [next] | [standalone]
| From | Olivier Miakinen <om+news@miakinen.net> |
|---|---|
| Date | 2022-03-14 10:47 +0100 |
| Subject | Re: Verifier la presence d'un mot dans tous les champs |
| Message-ID | <t0n2vh$23a2$1@cabale.usenet-fr.net> |
| In reply to | #152 |
Bonjour Dominique, Le 14/03/2022 à 10:21, Otomatic m'a répondu : > > Dans un tel cas, je ne chercherais pas une regexp, mais plutôt une > fonction avec explode pour séparer la phrase en segments et vérifier > dans chaque segment la présence ou non du mot. Oui, ce serait une bonne idée si c'était possible. Mais dans mon cas précis il n'y a pas de moyen simple de modifier le code, seulement les regexp. Je ne peux pas non plus capturer des sous-chaînes pour les traiter séparément ensuite. En revanche, j'ai la possibilité de combiner plusieurs regexp sur la même chaine avec des opérateurs logiques. Quelques exemples : - /regexp1/ et /regexp2/ - /regexp1/ ou /regexp2/ - non /regexp/ - non (/regexp1/ ou (/regexp2/ et non /regexp3/)) C'est pour ça que j'avais commencé par inverser le test, du fait que ça me semblait plus facile, en effet je peux alors utiliser : - non /regexp/ au lieu de : - /regexp/ Quoi qu'il en soit, merci de ta réponse. P.-S. : ton Forté Agent a toujours des problèmes avec les accents dans les titres, alors j'y remplace mes é par des e. -- Olivier Miakinen
[toc] | [prev] | [next] | [standalone]
| From | Otomatic <otomatic@oto.invalid> |
|---|---|
| Date | 2022-03-14 17:06 +0100 |
| Subject | Re: Verifier la presence d'un mot dans tous les champs |
| Message-ID | <rrpu2h5dbl519lucsavjlmmkavp0mrrn0v@4ax.com> |
| In reply to | #153 |
Olivier Miakinen <om+news@miakinen.net> écrivait : > Oui, ce serait une bonne idée si c'était possible. Mais dans mon cas > précis il n'y a pas de moyen simple de modifier le code, seulement > les regexp. Tu ne peux pas faire un truc du genre : if nombre_virgule == nombre_cœur -> faux ou if nombre_cœur == (nombre_virgule + 1) -> vrai
[toc] | [prev] | [next] | [standalone]
| From | Olivier Miakinen <om+news@miakinen.net> |
|---|---|
| Date | 2022-03-14 18:08 +0100 |
| Subject | Re: Verifier la presence d'un mot dans tous les champs |
| Message-ID | <t0nsr7$2k87$1@cabale.usenet-fr.net> |
| In reply to | #154 |
Le 14/03/2022 à 17:06, Otomatic a écrit : > >> Oui, ce serait une bonne idée si c'était possible. Mais dans mon cas >> précis il n'y a pas de moyen simple de modifier le code, seulement >> les regexp. > Tu ne peux pas faire un truc du genre : > if nombre_virgule == nombre_cœur -> faux > ou > if nombre_cœur == (nombre_virgule + 1) -> vrai D'une part je ne sais pas écrire une regexp qui compte indépendamment le nombre d'occurrences de deux chaînes et qui compare les deux nombres. Mais d'autre part ce test ne serait pas le bon, puisqu'il peut y avoir plusieurs fois le mot cœur entre deux virgules, et que ça ne doit pas compenser le fait que ce mot manque entre deux autres virgules. Je rappelle mes deux exemples : Pour parler à cœur ouvert, *cœur à cœur*, je mets du cœur à l'ouvrage, même si ce n'est pas de gaieté de cœur. Pour parler à cœur ouvert, *cœur à cœur*, je mets beaucoup de courage, même si ce n'est pas de gaieté de cœur. Dans le premier exemple il y a trois virgules pour cinq « cœur » alors que dans le second exemple ce sont trois virgules et quatre « cœur ». Pour enfoncer le clou, je peux dire que des deux phrases suivantes l'une est valide et pas l'autre, alors qu'elles ont le même nombre de chacun des deux éléments caractéristiques. 1) cœur,cœur,cœur,cœur 2) cœurcœur,,,cœurcœur -- Olivier Miakinen
[toc] | [prev] | [next] | [standalone]
| From | Dominique <zzz@aol.com.invalid> |
|---|---|
| Date | 2022-06-11 06:35 +0200 |
| Subject | Re: Verifier la presence d'un mot dans tous les champs |
| Message-ID | <t8162d$1rbm$1@gioia.aioe.org> |
| In reply to | #153 |
Le 14/03/2022 à 10:47, Olivier Miakinen a écrit :
> Oui, ce serait une bonne idée si c'était possible. Mais dans mon cas
> précis il n'y a pas de moyen simple de modifier le code, seulement
> les regexp. Je ne peux pas non plus capturer des sous-chaînes pour
> les traiter séparément ensuite.
J'avais trouvé cette solution :
test="Pour parler à cœur ouvert, je mets une phrase vide, cœur à cœur,
je mets du cœur à l'ouvrage, même si ce n'est pas de gaieté de cœur."
test1=test.split(',')
test1
Out[22]:
['Pour parler à cœur ouvert',
' je mets une phrase vide',
' cœur à cœur',
" je mets du cœur à l'ouvrage",
" même si ce n'est pas de gaieté de cœur."]
'cœur' in test1[1]
Out[23]: False
'cœur' in test1[2]
Out[24]: True
Mais ça ne répond pas aux cahier des charges !
Bonne journée,
Dolminique
[toc] | [prev] | [next] | [standalone]
| From | Olivier Miakinen <om+news@miakinen.net> |
|---|---|
| Date | 2022-06-11 10:48 +0200 |
| Subject | Re: Verifier la presence d'un mot dans tous les champs |
| Message-ID | <t81ks1$2ipl$1@cabale.usenet-fr.net> |
| In reply to | #162 |
Le 11/06/2022 06:35, Dominique a répondu à une question du 14/03 : > >> [...] Je ne peux pas non plus capturer des sous-chaînes pour >> les traiter séparément ensuite. > > J'avais trouvé cette solution : > > [capturer des sous-chaînes par split() pour les traiter séparément ensuite] > > Mais ça ne répond pas aux cahier des charges ! En effet ! > Bonne journée, Et bon trimestre. ;-) -- Olivier Miakinen
[toc] | [prev] | [next] | [standalone]
| From | "Benoît L." <benoit@leraillez.com.invalid> |
|---|---|
| Date | 2023-02-28 13:26 +0000 |
| Subject | Re: Verifier la presence d'un mot dans tous les champs |
| Message-ID | <ttkveo$7no$1@shakotay.alphanet.ch> |
| In reply to | #163 |
Nonobstant quelques doutes, le 11 juin 2022 à 09:48, Olivier Miakinen se permit de dire : > Le 11/06/2022 06:35, Dominique a répondu à une question du 14/03 : >> >>> [...] Je ne peux pas non plus capturer des sous-chaînes pour >>> les traiter séparément ensuite. >> >> J'avais trouvé cette solution : >> >> [capturer des sous-chaînes par split() pour les traiter séparément ensuite] >> >> Mais ça ne répond pas aux cahier des charges ! > > En effet ! > >> Bonne journée, > > Et bon trimestre. ;-) Une question de béotien (Olivier validera mes dires) : Ne peut-on utiliser deux variables ? Une qui contient le nombre de phrases et une qui contient le nombre de phrases avec la string pour ensuite les comparer ou produire une string telle que : X phrases et Y occurrences, ou plus simplement X Y, X_Y… Une mauvaise idée bien sûr ;) Tiens, une signature aléatoire assez juste je trouve. -- Benoît En essayant continuellement on finit par réussir. Donc, plus ça rate, plus on a des chances que ça marche. (Jacques Rouxel)
[toc] | [prev] | [next] | [standalone]
| From | Olivier Miakinen <om+news@miakinen.net> |
|---|---|
| Date | 2023-02-28 14:40 +0100 |
| Subject | Re: Verifier la presence d'un mot dans tous les champs |
| Message-ID | <ttl07l$u8m$1@cabale.usenet-fr.net> |
| In reply to | #204 |
Le 28/02/2023 à 14:26, "Benoît L." a écrit : > Nonobstant quelques doutes, le 11 juin 2022 à 09:48, Olivier Miakinen se > permit de dire : Oulà ! Le 11 juin 2022, ça fait longtemps que je n'ai plus le contexte, d'autant que mon serveur de news n'a qu'une rétention d'un mois. >> Le 11/06/2022 06:35, Dominique a répondu à une question du 14/03 : >>> >>>> [...] Je ne peux pas non plus capturer des sous-chaînes pour >>>> les traiter séparément ensuite. >>> >>> J'avais trouvé cette solution : >>> >>> [capturer des sous-chaînes par split() pour les traiter séparément ensuite] >>> >>> Mais ça ne répond pas aux cahier des charges ! >> >> En effet ! >> >>> Bonne journée, >> >> Et bon trimestre. ;-) > > Une question de béotien (Olivier validera mes dires) : Ne peut-on > utiliser deux variables ? Une qui contient le nombre de phrases et une > qui contient le nombre de phrases avec la string pour ensuite les > comparer ou produire une string telle que : X phrases et Y occurrences, > ou plus simplement X Y, X_Y… Sans contexte j'ai du mal à valider ou infirmer quoi que ce soit. Disons juste que s'il y a deux sous-chaînes extraites de la même chaîne, alors oui, on peut les mettre dans deux variables, souvent $1 et $2 même si ça dépend du langage utilisé faisant appel aux regexp. Cela peut être aussi deux éléments d'un tableau résultat[1] et résultat[2]. > Une mauvaise idée bien sûr ;) Je n'en sais rien. Si tu as un besoin particulier, alors tu vas devoir expliquer exactement ce que tu as besoin de faire pour que je (ou que quelqu'un d'autre) puisse te répondre. Cordialement, -- Olivier Miakinen
[toc] | [prev] | [next] | [standalone]
| From | "Benoît L." <benoit@leraillez.com.invalid> |
|---|---|
| Date | 2023-02-28 14:33 +0000 |
| Subject | Re: Verifier la presence d'un mot dans tous les champs |
| Message-ID | <ttl3bh$svv$1@shakotay.alphanet.ch> |
| In reply to | #205 |
Nonobstant quelques doutes, le 28 février 2023 à 14:40, Olivier Miakinen se permit de dire : > Je n'en sais rien. Si tu as un besoin particulier, alors tu vas devoir > expliquer exactement ce que tu as besoin de faire pour que je (ou que > quelqu'un d'autre) puisse te répondre. J’ai remonté l’enfilade depuis <t0lcik$1616$1@cabale.usenet-fr.net> ;) -- Benoît The bullshit asimmetry: the amount of energy needed to refute bullshit is an order of magnitude bigger than to produce it. -+- Brandolini -+-
[toc] | [prev] | [next] | [standalone]
| From | Olivier Miakinen <om+news@miakinen.net> |
|---|---|
| Date | 2023-02-28 19:06 +0100 |
| Subject | Re: Verifier la presence d'un mot dans tous les champs |
| Message-ID | <ttlfr1$13gf$1@cabale.usenet-fr.net> |
| In reply to | #206 |
Le 28/02/2023 à 15:33, "Benoît L." a écrit : > >> Je n'en sais rien. Si tu as un besoin particulier, alors tu vas devoir >> expliquer exactement ce que tu as besoin de faire pour que je (ou que >> quelqu'un d'autre) puisse te répondre. > > J’ai remonté l’enfilade depuis <t0lcik$1616$1@cabale.usenet-fr.net> ;) Ah oui, je m'en souviens maintenant, c'est moi qui avais eu ce besoin. Je me rappelle que j'avais trouvé une solution, que j'avais sans doute donnée. Si tu as le même besoin, puisque tu sais retrouver les articles anciens tu devrais pouvoir le retrouver aussi. Quoi qu'il en soit, pour ma part je n'en ai plus besoin. -- Olivier Miakinen
[toc] | [prev] | [next] | [standalone]
| From | "Benoît L." <benoit@leraillez.com.invalid> |
|---|---|
| Date | 2023-02-28 22:12 +0000 |
| Subject | Re: Verifier la presence d'un mot dans tous les champs |
| Message-ID | <ttlu7m$lqp$2@shakotay.alphanet.ch> |
| In reply to | #207 |
Avec enthousiasme, le 28 février 2023 à 19:06, Olivier Miakinen écrivit : > Le 28/02/2023 à 15:33, "Benoît L." a écrit : >> >>> Je n'en sais rien. Si tu as un besoin particulier, alors tu vas devoir >>> expliquer exactement ce que tu as besoin de faire pour que je (ou que >>> quelqu'un d'autre) puisse te répondre. >> >> J’ai remonté l’enfilade depuis <t0lcik$1616$1@cabale.usenet-fr.net> ;) > > Ah oui, je m'en souviens maintenant, c'est moi qui avais eu ce besoin. > Je me rappelle que j'avais trouvé une solution, que j'avais sans doute > donnée. Si tu as le même besoin, puisque tu sais retrouver les articles > anciens tu devrais pouvoir le retrouver aussi. > > Quoi qu'il en soit, pour ma part je n'en ai plus besoin. Je n’en ai pas besoin, mais j’ai trouvé le problème intéressant. D’où mon idée de solution. -- Quand on gagne, c’est l’équipe. Quand on perd, c’est l’entraîneur.
[toc] | [prev] | [next] | [standalone]
| From | Olivier Miakinen <om+news@miakinen.net> |
|---|---|
| Date | 2023-02-28 23:50 +0100 |
| Subject | Re: Verifier la presence d'un mot dans tous les champs |
| Message-ID | <ttm0fb$1bet$1@cabale.usenet-fr.net> |
| In reply to | #208 |
Le 28/02/2023 à 23:12, "Benoît L." a écrit : > > Je n’en ai pas besoin, mais j’ai trouvé le problème intéressant. D’où > mon idée de solution. Ah, ok. Alors du coup, bien que je ne me rappelle pas quelle regexp j'ai finalement utilisée, je peux au moins t'assurer d'une chose : c'est que dans mon cas il était impossible d'utiliser des variables. Et donc ton idée de solution avec deux variables ça ne pouvait pas marcher, puisque même une seule variable était impossible. Tout ce dont je disposais c'était : - une regexp globale matche ; - une regexp globale ne matche pas ; - ou une combinaison par ET, OU et NON des deux premiers cas. -- Olivier Miakinen
[toc] | [prev] | [next] | [standalone]
| From | Olivier Miakinen <om+news@miakinen.net> |
|---|---|
| Date | 2023-02-28 23:59 +0100 |
| Subject | Re: Verifier la presence d'un mot dans tous les champs |
| Message-ID | <ttm0vs$1bie$1@cabale.usenet-fr.net> |
| In reply to | #206 |
Allez, pour ceux que cela intéresse, je recopie l'article en question. Le 28/02/2023 à 15:33, "Benoît L." a écrit : > > J’ai remonté l’enfilade depuis <t0lcik$1616$1@cabale.usenet-fr.net> ;) § Bonjour, D'habitude c'est le plus souvent moi qui donne la solution à un problème de regexp, mais pour une fois c'est moi qui ai besoin d'aide. 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. Par exemple, pour le mot cœur, cette phrase serait valide : Pour parler à cœur ouvert, cœur à cœur, je mets du cœur à l'ouvrage, même si ce n'est pas de gaieté de cœur. En revanche celle-ci ne serait pas valide : Pour parler à cœur ouvert, cœur à cœur, je mets beaucoup de courage, même si ce n'est pas de gaieté de cœur. En effet, il n'y a nulle part le mot cœur entre la deuxième virgule et la troisième virgule. Je précise que ma variété de regexp est celle de Perl ou de PCRE (Perl-compatible regular expressions). Merci de votre aide ! §
[toc] | [prev] | [next] | [standalone]
| From | Olivier Miakinen <om+news@miakinen.net> |
|---|---|
| Date | 2023-03-01 00:04 +0100 |
| Subject | Re: Verifier la presence d'un mot dans tous les champs |
| Message-ID | <ttm19j$1bll$1@cabale.usenet-fr.net> |
| In reply to | #206 |
[Supersedes] Allez, pour ceux que cela intéresse, je recopie l'article en question. Le 28/02/2023 à 15:33, "Benoît L." a écrit : > > J’ai remonté l’enfilade depuis <t0lcik$1616$1@cabale.usenet-fr.net> ;) § Bonjour, D'habitude c'est le plus souvent moi qui donne la solution à un problème de regexp, mais pour une fois c'est moi qui ai besoin d'aide. 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. Par exemple, pour le mot cœur, cette phrase serait valide : Pour parler à cœur ouvert, cœur à cœur, je mets du cœur à l'ouvrage, même si ce n'est pas de gaieté de cœur. En revanche celle-ci ne serait pas valide : Pour parler à cœur ouvert, cœur à cœur, je mets beaucoup de courage, même si ce n'est pas de gaieté de cœur. En effet, il n'y a nulle part le mot cœur entre la deuxième virgule et la troisième virgule. Je précise que ma variété de regexp est celle de Perl ou de PCRE (Perl-compatible regular expressions). Merci de votre aide ! §
[toc] | [prev] | [next] | [standalone]
| From | Olivier Miakinen <om+news@miakinen.net> |
|---|---|
| Date | 2023-03-01 00:15 +0100 |
| Subject | Re: Verifier la presence d'un mot dans tous les champs |
| Message-ID | <ttm1u5$1br0$1@cabale.usenet-fr.net> |
| In reply to | #211 |
Le 01/03/2023 à 00:04, Olivier Miakinen a écrit : > > 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. Et une solution possible (je ne sais pas si c'est celle que j'avais retenue), c'est de faire l'inverse : une regexp qui réponde FAUX si un mot en particulier se trouve dans chaque partie de la phrase, c'est-à-dire qui réponde VRAI si ce mot est absent d'au moins une des parties de la phrase. La regexp suivante semble convenir : (^|,)(.(?!cœur))*(,|$) et c'est encore une démonstration de la puissance des assertions. > Par exemple, pour le mot cœur, cette phrase serait valide : > > Pour parler à cœur ouvert, cœur à cœur, je mets du cœur à l'ouvrage, > même si ce n'est pas de gaieté de cœur. La regexp ne trouve rien ici. > En revanche celle-ci ne serait pas valide : > > Pour parler à cœur ouvert, cœur à cœur, je mets beaucoup de courage, > même si ce n'est pas de gaieté de cœur. Ici, la regexp trouve ", je mets beaucoup de courage," Cordialement, -- Olivier Miakinen
[toc] | [prev] | [next] | [standalone]
| From | "Benoît L." <benoit@leraillez.com.invalid> |
|---|---|
| Date | 2023-03-01 00:03 +0000 |
| Subject | Re: Verifier la presence d'un mot dans tous les champs |
| Message-ID | <ttm4os$inu$1@shakotay.alphanet.ch> |
| In reply to | #212 |
Nonobstant quelques doutes, le 1er mars 2023 à 00:15, Olivier Miakinen se permit de dire : > Le 01/03/2023 à 00:04, Olivier Miakinen a écrit : >> >> 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. > > Et une solution possible (je ne sais pas si c'est celle que j'avais > retenue), c'est de faire l'inverse : une regexp qui réponde FAUX > si un mot en particulier se trouve dans chaque partie de la phrase, > c'est-à-dire qui réponde VRAI si ce mot est absent d'au moins une > des parties de la phrase. > > La regexp suivante semble convenir : > (^|,)(.(?!cœur))*(,|$) Oui, bon, bin caser la solution dans 22 caractères… hors de mes compétences passées, actuelles ou à venir. Par contre, je te fais un AppleScript si tu veux (ou du Swift si je m’y remets). > et c'est encore une démonstration de la puissance des assertions. Ou celle (la puissance) de ceux qui savent prendre le problème du bon côté c’est à dire à l’envers : C’est VRAI si c’est faux (il y a l’erreur). Je parle d’erreur puisqu’un élément qui manque est souvent perçu comme faux. >> Par exemple, pour le mot cœur, cette phrase serait valide : >> >> Pour parler à cœur ouvert, cœur à cœur, je mets du cœur à l'ouvrage, >> même si ce n'est pas de gaieté de cœur. > > La regexp ne trouve rien ici. Donc la phrase est fausse puisqu’il n’y a pas l’erreur recherchée. >> En revanche celle-ci ne serait pas valide : >> >> Pour parler à cœur ouvert, cœur à cœur, je mets beaucoup de courage, >> même si ce n'est pas de gaieté de cœur. > > Ici, la regexp trouve ", je mets beaucoup de courage," Et c’est VRAI puisqu’il a trouvé une fausse. J’aime beaucoup. Merci, -- Benoît En essayant continuellement on finit par réussir. Donc, plus ça rate, plus on a des chances que ça marche. (Jacques Rouxel)
[toc] | [prev] | [next] | [standalone]
Page 1 of 2 [1] 2 Next page →
Back to top | Article view | fr.comp.lang.regexp
csiph-web