Sélection d'un ou plusieurs mots après un mot précis

Fermé
tigerman Messages postés 27 Date d'inscription mercredi 13 octobre 2010 Statut Membre Dernière intervention 3 mai 2013 - 30 avril 2013 à 12:15
 Utilisateur anonyme - 3 mai 2013 à 19:10
Bonjour,
Voila, je suis en train de faire un programme, qui, fait a peu près comme "jarvis" dans iron man (pour l'instant je travaille à l'écris avec la console), bon bien sur c'est impossible, mais je vais vous expliquer...
je travaille sur la partie du logiciel, qui, si certaine condition sont vérifié, me lance une recherche sur google actualités dans les moins de 24 heures....
Le problème c'est que la, si les conditions sont vérifiés, le programme va ensuite me demander quels sont les termes de ma recherche, et ensuite va faire la recherche...

exemple:
moi: Quel sont les nouveautés ?
le logiciel: Sur quelles nouveautés voulez vous effectuer votre recherche ?
moi: les lunettes
le logiciel: lances google actualités avec comme élément de recherche "les lunettes"

Moi, j'aimerais directement dire: Quel sont les nouveautés concernant les lunettes ?
en gros, que ca marche comme ca:
if(il y a le mot "pour" ou "concernant" ou "sur")
alors le logiciel enregistre tous les mots apres....

je précise que j'utilise des char, et que pour l'instant, pour vérifier si certain mot sont dans mon char, j'utilise "strstr"

Avez vous une solution pour ca ?

Merci d'avance

10 réponses

SALUT !

Bon en premier lieu, question c**, pourquoi ne travail-tu pas en c# ? tu as l'air de faire une apps pour Windows, et vu la tienne je dirai 8. Enfin je pense juste que ça serai beaucoup plus simple mais après c'est un choix ^^

sinon pour ce que tu cherche je te conseil de voir du côté des expression régulières (tu as un site pas mal pour t'aider : https://myregextester.com/).
Ça te permettra de facilement vérifier l'existence de mots clefs dans une chaîne et donc de profiler la demande utilisateur plus facilement.

De même je pense que tu fais un simple traitement du texte des pages web et donc l'utilisation des expression régulières te sera là aussi intéressante.
0
tigerman Messages postés 27 Date d'inscription mercredi 13 octobre 2010 Statut Membre Dernière intervention 3 mai 2013 5
1 mai 2013 à 13:49
Merci mais je vais rester an C++
Et aussi merci pour les expressions régulière, cela me servira surement...
Mais je n'ai toujours pas trouvé comment comment sélectionner un mot après un mot "précis"
0
avec l'expression régulière justement.
par exemple, tu as :
clef voulu du reste qui sert a rien

ton mot clef est "clef", et tu souhaite le mot qu'il y a ensuite, soit ici "voulu". Tu vas donc "indiquer" à ton expression régulière que tu souhaite récupérer les caractère qui viennent après "voulu " (espace dans ce cas ci vu que dans une phrase chaque mot est séparé par un espace) jusqu'à l'espace suivant.
soit :
clef (.*?) 

avec un espace après clef et un après la fermeture de parenthèse
0
tigerman Messages postés 27 Date d'inscription mercredi 13 octobre 2010 Statut Membre Dernière intervention 3 mai 2013 5
1 mai 2013 à 17:58
D'accord merci je vais regarder ça ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tigerman Messages postés 27 Date d'inscription mercredi 13 octobre 2010 Statut Membre Dernière intervention 3 mai 2013 5
1 mai 2013 à 19:50
Donc merci de ta réponse, mais ca ne fonctionne pas, voila, j'ai créé une char du nom de "motClef" mais quand j'écrit ceci: const char *motCle = sur (.*?) ;
ça ne fonctionne pas... ( expected primary-expression before '.*' token
J'ai aussi essayé avec un string: string motClef('sur (.*?) ;);
Mais rien...
0
Utilisateur anonyme
2 mai 2013 à 07:53
je ne vois pas ce que tu as essayé de faire. Regarde ici :
https://nicolasj.developpez.com/articles/regex/

la partie
IV-B. Extraire une sous chaîne correspondant à un motif

histoire de voir le fonctionnement
0
tigerman Messages postés 27 Date d'inscription mercredi 13 octobre 2010 Statut Membre Dernière intervention 3 mai 2013 5
2 mai 2013 à 20:11
Merci, j'ai cherché, mais, mais je ne vois pas comment je pourrait faire...
Pour t'expliquer pourquoi j'ai fait ça, je vais te dire comment fonctionne pour l'instant un morceau du programme:
if(strstr phraseUtilisateur, "Est ce que" ou "quels sont" ou "y a t'il") //phraseUtilisateur = demande avant ce code
{
if(strstr phraseUtilisateur, "nouveautés" ou "actualitées" ou "nouvelles")
{
cout << "Sur quoi voulez vous effectuer votre recherche ? " << endl;
string motClef;
cin >> "motClef" >> endl;
const char url1 = "debut lien google actu";
const char url2 = "fin lien google actu";
const char url = (url1 + motClef + url2);
shellexecute (url);
}
}

Bon, la le code ne marcherais pas, mais en gros je fais comme ça

Voila pourquoi je veux que cela soir un char ou un string, comme ça je l'intègre dans le lien et je l'exécute avec shellexecute...
Et c'est pour ça que je ne voit pas comment faire avec ce que tu m'as donné avec ce que j'ai fais...
0
Utilisateur anonyme
3 mai 2013 à 09:51
ouai mais tu ne prends pas le problème dans le bon sens :

l'utilisateur saisie une chaine (que tu conserve dans un string ... on va prendre le string car il sera plus simple à manipuler).
tu applique une expression régulière sur cette chaine afin de récupérer des mots clefs dans un tableau de string par exemple (dans un premier temps, extrait 1 mot à la fois dans une autre chaine que celle source)
et en fonction tu mot clef extrait, tu traite.
0
tigerman Messages postés 27 Date d'inscription mercredi 13 octobre 2010 Statut Membre Dernière intervention 3 mai 2013 5
3 mai 2013 à 18:35
Merci, ça marche !
Bon, il me reste un problème, mais je vais poster un autre sujet ;)
0
Utilisateur anonyme
3 mai 2013 à 19:10
ok cool ^^ bne soirée !
0