Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[regexp] aide sur une recherche

14 réponses
Avatar
GLH
Bonjour,
je cherche un pattern correspndant à :
il y a exactement N occurences consecutives ou non consecutives d'UN
caractère dans une chaine

exemple
N = 3 , le caractère est A

AHFJADJFAKF : vrai
AAKKFMLEFL : faux
FJAKKLAKAK : vrai
FKALAALALP : faux
KJAAKLALLL : vrai
KJAAALOPLL : vrai

Merci

glh
Reponse sur le groupe svp (adresse non valide)

4 réponses

1 2
Avatar
Michel Rodriguez
Ronan Le Hy wrote:

Michel Rodriguez a écrit:
Pour en revenir au probleme de depart, ja connais pas Java, mais en s'en
tenant a des expressions regulieres, pour peu que Java retourne aussi le
nombre de substitutions, ca marche aussi:


He, "pour peu que"... Visiblement, c'est déjà trop demander.

http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Matcher.html#replaceAll(java.lang.String)


LOL! Je savais pas que les regexps c'etait si complique a utiliser! Apres
avoir lu ca, mon conseil a quelqu'un qui a besoin de regexps, ca serait de
laisser tomber Java et de se mettre a Perl ;--)


Ronan, qui a jeté XML::Twig pour YAML :)

<gnat> TorgoX: you're rapidly learning, I see, that XML is a fucking
piece of festering shit which has no more justification for walking
God's clean earth than a dung beetle with diarrhoea.


Hey, je suis pas contre, apres tout j'ai bien fait un Lighning Talk disant
exactement ca ( http://xmltwig.com/talk/stop/ ) Et ceci dit, comme
vengeance, Nat a du ecrire le chapitre du Cookbook consacre a XML.

__
Michel Rodriguez
Perl &amp; XML
http://xmltwig.com


Avatar
GLH
"Paul GABORIT" a écrit dans le message de
news:

À (at) Thu, 14 Aug 2003 11:22:46 +0200,
"GLH" écrivait (wrote):
Bonjour,
je cherche un pattern correspndant à :
il y a exactement N occurences consecutives ou non consecutives d'UN
caractère dans une chaine

exemple
N = 3 , le caractère est A

AHFJADJFAKF : vrai
AAKKFMLEFL : faux
FJAKKLAKAK : vrai
FKALAALALP : faux
KJAAKLALLL : vrai
KJAAALOPLL : vrai

Merci

glh
Reponse sur le groupe svp (adresse non valide)



L'expression suivante convient :

^[^A]*(A[^A]*){3}$

Sauf que ce n'est pas la bonne manière de faire car c'est très inefficace
!


--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
Remove '.OOO' from e-mail address - Supprimez '.OOO' de l'adresse e-mail


merci
pile poil ce que je voulais. (que ca marche)

maintenant, pour ma culture personnelle :
en quoi est-ce inefficace ?
y a t'il plus efficace comme regexp qui fasse la meme chose et qui puisse
etre utilisé par la plupart des anlyseurs de regexp (en perl, java, c, vb,
python, et j'en passe) exit donc les astuces perl qu'on m'a proposé, a
juste titre, quelques reponses plus haut comme tr///.
je rappelle que j'ai posté ici en depit de trouver (1)un forum adequat,
(2)des reponses sur google, (3) des reponses sur des sites de tutoriaux (4)
un regexp-gourou à portée de main.

glh


Avatar
Paul GABORIT
À (at) Thu, 14 Aug 2003 14:33:35 +0200,
"GLH" écrivait (wrote):
en quoi est-ce inefficace ?


Dans ce cas précis, le moteur de regexep est moins efficace qu'un simple
parcours linéaire du texte sans aucun retour arrière.

y a t'il plus efficace comme regexp qui fasse la meme chose et qui puisse
etre utilisé par la plupart des anlyseurs de regexp (en perl, java, c, vb,
python, et j'en passe)


La syntaxe des regexp n'a rien d'universelle (ne serait-ce que l'utilisation
des parenthèses par exemple). Elle est même specifique à chaque moteur. Après
avoir lu le lien sur le moteur de regexp de Java, je vous propose
l'amélioration suivante :

A[^D](?:D[^D]){4}z

(En supposant la recherche d'exactement 4 fois la lettre D dans un texte
quelconque.)



--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
Remove '.OOO' from e-mail address - Supprimez '.OOO' de l'adresse e-mail

Avatar
GLH
"Paul GABORIT" a écrit dans le message de
news:

À (at) Thu, 14 Aug 2003 14:33:35 +0200,
"GLH" écrivait (wrote):
en quoi est-ce inefficace ?


Dans ce cas précis, le moteur de regexep est moins efficace qu'un simple
parcours linéaire du texte sans aucun retour arrière.

y a t'il plus efficace comme regexp qui fasse la meme chose et qui
puisse


etre utilisé par la plupart des anlyseurs de regexp (en perl, java, c,
vb,


python, et j'en passe)


La syntaxe des regexp n'a rien d'universelle (ne serait-ce que
l'utilisation

des parenthèses par exemple). Elle est même specifique à chaque moteur.
Après

avoir lu le lien sur le moteur de regexp de Java, je vous propose
l'amélioration suivante :

A[^D](?:D[^D]){4}z

(En supposant la recherche d'exactement 4 fois la lettre D dans un texte
quelconque.)



--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
Remove '.OOO' from e-mail address - Supprimez '.OOO' de l'adresse e-mail


ok, merci beaucoup
glh


1 2