Bonjour,
Comment on code les regex
Le problème est que je ne sais pas comment faire pour que ma méthode reconnaisse des pattern ayant cette forme t?t? (format PERL) pour qu'elle puisse me renvoyer les lignes adéquates...
Bonjour,
Comment on code les regex
Le problème est que je ne sais pas comment faire pour que ma méthode reconnaisse des pattern ayant cette forme t?t? (format PERL) pour qu'elle puisse me renvoyer les lignes adéquates...
J'obtiens les erreurs suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 ./Test.java:59: cannot find symbol symbol : method compile(java.util.regex.Pattern) location: class java.util.regex.Pattern Pattern p = Pattern.compile(pattern); ^ ./Test.java:60: cannot find symbol symbol : class Matcher location: class Test Matcher m; ^ 2 errors
Est-ce que tu essaye au moins de trouver la solution à tes erreurs ou tu les poste directement ?
Je dit ça car cela fait plusieurs fois que tu poste des "erreurs" plutôt évidente où il suffit de lire les messages d'erreurs pour connaître la solution.
Bon, regarde le message d'erreur suivant :
Il dit clairement que le compilateur ne trouve pas, pour la classe Pattern, de méthode compile(Pattern), et c'est normal puisque qu'elle n'existe pas. En effet, il te suffit de regarder la doc de la classe Pattern pour voir qu'elle possède deux méthode compile() : compile(String regex) et compile(String regex, int flags)Envoyé par Premium
Enfin pour le message :
il t'est indiqué que le compilateur ne connait pas la classe Matcher, en effet tu as oublié l'importEnvoyé par PremiumEn analysant bien tes messages d'erreur et en utilisant la Javadoc, tu devrais être à même de résoudre nombre de tes problèmes avant de poster .
Code : Sélectionner tout - Visualiser dans une fenêtre à part import java.util.regex.Matcher;
J'ai mis import java.util.*;
je croyais avec cette facon, on avait toutes les classes de java.util
Comme il n'existe pas de méthode compile(Pattern) et que la méthode matchers ne prend pas de Pattern, comment est-ce que je fais pour utiliser ce parametre ?
C'est une erreur fréquente en effetEnvoyé par Premium
Quand tu fais import java.util.*; ca va importer toutes les classes du packag java.util, mais ca ne va pas importer les classes des sous-packages de java.util, comme par exemple regex.
Ben tu l'utilise à la ligneEnvoyé par Premiumen remplaçant p par pattern. Tu reçoit un Pattern en paramètre, utilise le donc, pourquoi vouloir en créer un autre ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part m = p.matcher(e.getKey());
J'ai une dernière questionEnvoyé par le y@m's
Dans la javadoc, j'ai vu qu'il y avait de nombreuses écritures différentes pour les expressions régulières avec des *, des [], des ?,...
Est-ce qu'il faut faire quelque chose de spécial pour qu'un pattern de ce style t?t? soit reconnu ?
Ben, il s'agit de la syntaxe des expressions régulières, la doc de la classe Pattern donne un résumé de l'utilisation des expression régulières, après ça depend de ce que tu veus.Envoyé par Premium
L'expression régulière "t?t?" veut dire 0 ou 1 't' suivi par 0 ou 1 't', donc les différentes chaines qui correspondent sont :
- ""
- "t"
- "tt"
A ok, je n'ai donc pas à me soucier de l'écriture, la fonction fera les recherches seule.Envoyé par le y@m's
Donc si je comprends bien les mots tintin, titi, toutou, tata, tito, tutu ne seront pas reconnu par t?t?
Je croyais que t?t? signifiait t suivit d'une ou plusieurslettre, t suivit d'une ou plusieurs lettres
non,Envoyé par PremiumGreedy quantifiers
X? X, once or not at allexact, pour ça : "t.+t.+" qui veut dire : 't' suivi par n'importe quel caractère (.) au moins une fois (+) suivi de 't' suivi par n'importe quel caractère (.) au moins une fois (+).Envoyé par Premium
Ce qui est bizarre, c'est que pour l'exo qu'on me demande de faire concernant la recherche de mots "normaux" ou d'expressions régulières, cet exemple t?t? a été donné et il a été précisé expression régulière au format PERL.
Je ne vois pas l'interet de chercher dans un texte des mots tels que "", "t" ou "tt" les 2 derniers ne seront jamais présent .
Une expression régulière au format PERL, utilise-t'elle autre chose que des ?
Je ne connais pas le perl ni s'il possède des expressions régulières particulières, il ne te reste plus qu'à faire une petite recherche sur internet, je pense que tu ne devrais pas avoir trop de mal à trouver.
Partager