Bonjour,
je voudrais effectuer une recherche par mot-clés dans un texte.
Existe-t-il une classe qui me permette d'effectuer cette recherche ?
Bonjour,
je voudrais effectuer une recherche par mot-clés dans un texte.
Existe-t-il une classe qui me permette d'effectuer cette recherche ?
Bah tu as la classe String qui possède quelques méthodes basiques comme indexOf(String str) qui te retourne la position du bout de texte str contenu dans ton texte, ou -1 si ton texte ne contient pas ce bout de texte. Je pourrais peut être t'aider d'avantage, mais tu es assez vague. Quelle genre de recherche veux tu faire ? Juste chercher une suite de lettre, des mots clés ?
Merci pour des explications![]()
Qu'est-ce que tu entends par "recherche par mot-clé"?
Si tu veux savoir si un texte contient un de tes mots clé, effectivement c'est "indexOf()" (ou alors "contains()" du package commons-lang de Jakarta qui offre des outils de manipulation des chaînes de caractères)
Si tu veux faire autre chose de plus compliqué (compter le nombre d'apparitions d'un mot-clé dans ton texte pour calculer un score de correspondance par exemple), dis-le nous... ce n'est pas la même chose.
Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
Mes articles et tutoriaux & Mon blog informatique
merci pour vos réponses
ce que je cherche à faire c'est déterminer si des mots (stockés dans un fichier appelé keywords.txt par exemple) apparaissent dans un texte.
J'ai recherché et j'ai trouvé ça java.util.regex.*
j'ai essayé d'écrire une petite boucle mais ça ne fonctionne pas ...
La sortie du programme me renvoit qu'aucun des mots testé n'est dans le texte pourtant, cela devrait me renvoyer des résultats positifs !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 public void parseContent(String KeyWordsPath) { try { BufferedReader keywords = new BufferedReader( new FileReader(KeyWordsPath)); String line = ""; while((line = keywords.readLine()) != null) { System.out.println("["+line+"]"); Pattern motif = Pattern.compile(line); Matcher mot = motif.matcher(content); boolean resultat = mot.matches(); String out = "Le motif ["+line+"]"; if(resultat) out += " a été"; else out += " n'a pas été"; out += " trouvé dans le texte"; System.out.println(out); } } catch(FileNotFoundException exc) { System.err.println("Erreur <ParseContent> : "+exc); } catch(IOException exc) { System.err.println("Erreur <ParseContent> : "+exc); }
Je vais me renseigner sur les possibilités offertes par le package commons-lang de jakarta également![]()
C'est normal... tu utilises mal les expressions régulières!
cf. le tutorial de Hugo Etiévant.
Ce n'est pas la méthode "matches()" mais "find()" que tu dois utiliser dans ton cas
Et vu ce que tu veux faire, un simple "indexOf()" suffit (et sera plus rapide): pas besoin d'en venir aux expressions régulières
A lire aussi :
- Tutoriels Java : http://java.developpez.com/cours/
- Le formidable cours Java de jmdoudou : http://jmdoudoux.developpez.com/cours/developpons/java/
Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
Mes articles et tutoriaux & Mon blog informatique
merci
en effet ça marche avec find()
Je vais voir ce tutoriel
Partager