Edobvdcorp
Messages postés8Date d'inscriptionjeudi 8 juillet 2004StatutMembreDernière intervention 9 juillet 2004
-
8 juil. 2004 à 11:53
kkhaled
Messages postés1Date d'inscriptionmercredi 19 février 2003StatutMembreDernière intervention 7 septembre 2005
-
7 sept. 2005 à 11:44
Bonjour !
comment puis je faire pour reconnaître une chaine incomplète avec une expression régulière en java ?
par chaine incomplète, j'entend par exemple :
str = "aaa"
regex = "a*b"
j'aimerai un genre de str.prefixmatches(regex) qui renverai vrai - la chaine correspond bien au début de la regex. (pour cet exemple, str.matches(regex) renvoie faux )
En fait, il me faut savoir si une chaine en cours de construction respecte une expression régulière ou pas.
Edobvdcorp
Messages postés8Date d'inscriptionjeudi 8 juillet 2004StatutMembreDernière intervention 9 juillet 2004 8 juil. 2004 à 14:45
si je met mon regex à "a*b?"
alors *au final*, la chaine "aaaa" sera acceptée alors que ce n'est pas ce que je veux.
en fait, j'ai une liste de plusieurs regex, avec un ordre de priorité. Ce que j'aimerai, c'est qu'au cours de ma construction de chaine (str pour les intimes), je puisse éliminer au fur et à mesure les expressions qui ne correspondront jamais à ce que je suis en train de construire
détails des opérations :
---------------------------------
regex1 = 'f*g'
regex2 = 'a*b'
regex3= 'a*c'
- 1er tour de boucle :
str = 'a'
ce que je veux c'est être capable de savoir , c'est que regex1 n'acceptera pas str
en revanche, regex2 acceptera
-2ième tour :
str = 'aa'
on a déjà éliminer regex1, il reste 2 et 3 (pour l'instant on ne regarde que 2)
-3ième tour :
str='aac'
là c facile : un simple matches suffirait
wargre
Messages postés649Date d'inscriptionmardi 8 juin 2004StatutMembreDernière intervention 9 septembre 20047 8 juil. 2004 à 16:23
si je comprend bien, les expressions reguliere ne te seront d'aucun secourt puisque tu veut construire point par point ta methode de recherche (c'est justement pour eviter cela que les expressions reguliéres ont été crée si je ne me trompe) . bref autant faire un bon vieux switch
Edobvdcorp
Messages postés8Date d'inscriptionjeudi 8 juillet 2004StatutMembreDernière intervention 9 juillet 2004 8 juil. 2004 à 16:37
c'est ce que je fais déjà en fait, un genre de machine à état mais c super lourd à débugger et fo en faire une pour chaque expression régulière
j'aimerai juste pouvoir savoir si une chaine est ou n'est pas un préfixe d'une chaine reconnue par une expression régulière... çà doit bien être possible qd même ??? !! ?? :-D
wargre : j'te remercie de me faire la discution, au moins j'ai l'impression d'avancer :D
wargre
Messages postés649Date d'inscriptionmardi 8 juin 2004StatutMembreDernière intervention 9 septembre 20047 9 juil. 2004 à 14:29
les parenteses capturante! (ouf)
mais la il faut que t'utilise le Pattern de java.util.regex
tu fais "^prefixe([a-z]*)$" et en sortie t'as
-> true => prefixe trouvé
|-> renvoie une chaine vide, il n'y a que le prefixe
|-> renvoie une chaine avec le texte apres le prefixe.
-> false => prefixe non trouvé
Edobvdcorp
Messages postés8Date d'inscriptionjeudi 8 juillet 2004StatutMembreDernière intervention 9 juillet 2004 9 juil. 2004 à 16:11
en fait il y a bien plus que 5 choix (parce que là c juste les listes), c'est pour çà que c'était intéressant de généraliser pour pouvoir après rajouter à la volée facillement