Ok, j'ai testé ce code, donc ça devrait marcher maintenant. Il cherche tous les mots Wh
que je pourrais penser dans la langue anglaise, au lieu d'essayer de trouver Wh
lui-même en un mot.
String text = "What is your name? How do you do? I am in way. Where are you? Are you hungry? I like you. What about questions that contain a comma, like this one? Do you like my name, Whitney Houston? What is going to happen now, is you are going to do what I say. Is that clear? What's all this then?";
Pattern p = Pattern.compile("(?:Who|What|When|Where|Why|Which|Whom|Whose)(?:'s)?\\s+[^\\?\\.\\!]+\\?");
Matcher m = p.matcher(text);
List<String> questions = new ArrayList<String>();
while (m.find()) questions.add(m.group());
for (String question : questions) System.out.println(question);
Je viens de réaliser qu'il pourrait y avoir une question commençant par Who's
, il permet maintenant 's
après le mot Wh
.
Quelle partie avez-vous problème avec? Construire l'expression rationnelle ou utiliser une bibliothèque regex en Java? Puisque vous avez étiqueté 'nsregularexpression' - avez-vous besoin d'utiliser cette bibliothèque, ou suffit-il d'utiliser le regexen JFC standard? –
Je veux juste trouver un point d'interrogation (?) D'abord puis parmi eux je veux extraire les questions Wh en utilisant l'expression regula – user1949167
Pourquoi ne pas utiliser une regex pour toute la question, alors attention à la position du point d'interrogation? Si vous voulez utiliser des regex (pas qu'ils sont nécessaires ici), faites-le complètement. –